理想情況下,我希望將多個sql語句作爲單個exec sp_executesql語句執行。一個例子是,我使用一個IF EXISTS以確定是否運行第二個聲明:sp_execute用於多個動態T-SQL語句ak批處理
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'之前插入一個換行符。 –