В идеале я хотел бы выполнить несколько операторов sql как один оператор sp_executesql. Примером может быть там, где я использую один IF EXISTS, чтобы определить, если запустить второе заявление:sp_execute для нескольких динамических операторов T-SQL ak a batch
drop proc ai_ImportDataAddListPosn
go
create proc ai_ImportDataAddListPosn(@ParamTableName NVARCHAR(255), @debug INT)
AS
BEGIN
DECLARE @sql AS NVARCHAR(4000)
SET @sql = N'IF NOT EXISTS(SELECT * FROM syscolumns INNER JOIN sysobjects ON syscolumns.id = sysobjects.id WHERE sysobjects.name = ''' + @ParamTableName + ''' AND Syscolumns.name = ''ListPosn'');'
+ 'alter table [' + @ParamTableName + '] add ListPosn int identity(1,1)'
IF @debug = 1 PRINT @sql
EXEC sp_executesql @sql
END
Go
EXEC ai_ImportDataAddListPosn DeptForMove, 1
Я понимаю, что этот пример не проверить существование таблицы первых, его просто упрощенный пример не реальный проблема. Я также знаю, как SQL-инъекции и как бороться с ней. Я достаточно рад, что оба утверждения хороши. SQL
Я думал, что «;» может выступать в качестве терминатора выписки
Вам нужно вставить новую строку перед 'alter'. –