Есть очень мало мест, где параметры можно использовать в T-SQL.Обычно это именно те места, где вы можете найти строку в кавычках , а не просто любое произвольное место в запросе (где запрос обязательно находится в виде строки)
Например, вы могли быиспользуйте параметр или переменную для замены 'hello'
ниже:
SELECT * from Table2 where ColA = 'hello'
Но вы не можете использовать его там, где появляется Table2
.Я не знаю, почему люди, кажется, ожидают, что такие вещи возможны в T-SQL, когда это вообще невозможно в большинстве других языков программирования, кроме функций стиля exec
/ eval
.
Если у вас есть несколько таблиц, которые имеют одинаковую структуру (имена и типы столбцов), , как правило, предполагает, что на самом деле у вас должна быть одна таблица с возможно дополнительными столбцами, которые различаютмежду строками, которые изначально были бы в разных таблицах.Например, если у вас есть:
CREATE TABLE MaleEmployees (
EmployeeNo int not null,
Name varchar(50) not null,
)
и
CREATE TABLE FemaleEmployees (
EmployeeNo int not null,
Name varchar(50) not null
)
Вместо этого вы должны иметь:
CREATE TABLE Employees (
EmployeeNo int not null,
Name varchar(50) not null,
Gender char(1) not null,
constraint CK_Gender_Valid CHECK (Gender in ('M','F'))
)
Затем вы можете запросить эту таблицу Employees
, независимо от того,пола, а не пытаться параметризовать имя таблицы в вашем запросе.Конечно, вышесказанное является преувеличенным примером.