我需要编写一个只有执行语句的过程。
示例:
Create Procedure dbo.allSPExecute( @id int)
as
begin
EXEC dbo.tic @day= 7,@name = 'Gname',@Type = 'Utype'
EXEC dbo.tic @day= 7,@name = 'tname',@Type = 'Utype'
EXEC dbo.gtype @day = 7,@Tname = 'UName_By',@Udept = 'Dept'
End
我有超过 50 个这样的语句。我有一个查找表:
ID Name SCol Dcol IOrd
1 dbo.tic Gname @name 1
1 dbo.tic tname @name 2
1 dbo.tic Utype @Type 1
1 dbo.tic Utype @Type 2
2 dbo.gtype UName_By @Tname 1
2 dbo.gtype Dept @Udept 1
有没有一种方法,如果我传递 ID,那么它将从查找表中获取值并执行该过程。有人可以帮忙吗?
编辑:更改了查找表中的数据并创建过程
最佳答案
最简单的解决方案 - 让你的存储过程像这样:
Create Procedure dbo.allSPExecute( @id int)
as
DECLARE @SQL varchar(max)
SET @SQL = 'USE MyDB'
SELECT @SQL = @SQL +
'EXEC ' + t.Name + ' @day = 7,' + t.Dcol + ' = ''' + t.Scol + ''
FROM MyTable t
WHERE t.id = @ID
EXEC (@SQL)
关于sql - 如何为此编写动态 SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6157096/