сбросить тип по переменной в MSSQL - PullRequest
0 голосов
/ 24 января 2019

Как я могу удалить тип, используя переменную в MSSQL?Я не могу уронить его следующим образом:

create procedure DropSomething(
@tName nvarchar(1000)
, @tCode nvarchar(1000)
)
as
begin
    set nocount on
    if @tCode = 'type'
    begin
        if exists(select [name] from sys.types where [name] = @tName) 
        drop type @tName
    end     
end
go   

exec DropSomething N'typeName','type'

Вот сообщение об ошибке:

Сообщение 102, уровень 15, состояние 1, процедура DropSomething, строка 16 [Batch Start Line 19] Неверный синтаксис рядом с @tName.

1 Ответ

0 голосов
/ 24 января 2019

Нельзя параметризировать идентификаторы в SQL.Параметры являются заполнителями для данных, а идентификаторы не являются данными.

Вам необходимо использовать динамический SQL:

if @tCode = 'type'
begin
    if exists(select [name] from sys.types where [name] = @tName) 
    begin
        declare @sql nvarchar(200) = 'drop type ' + QUOTENAME(@tName)
        exec(@sql)
    end
end     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...