如何从sql存储过程中的登台表执行sql脚本

时间:2013-08-23 16:47:29

标签: sql-server stored-procedures cursor executequery executescalar

以下情景的最佳方法是什么?

在我的C#程序中,我有一些sql命令,如UPDATE,INSERT,DELETE。我可以在我的C#程序中执行它们(工作正常)但我需要在其中一个存储过程到达最后一行时执行这些sql命令。所以我打算将sql命令存储在同一个数据库的某个临时表中,然后我想在存储过程中打开这个表并逐个执行。

在存储过程中打开表然后根据某些条件遍历表的最佳方法是什么(例如select * from TempStagingTable,其中customerId ='1000')。如果它返回10条记录,我想循环它们并执行存储在名为“CustomSqlScript”的列中的sql命令

PS:我正在使用SQL 2008 R2。

1 个答案:

答案 0 :(得分:1)

那么,您最初可以从表A中选择数据,而不是使用游标,您可以使用while循环(因为它会提高与游标相比的性能),然后您可以从表B执行预定义的SQL语句

请在下面找到sql脚本来做同样的事情

请注意:我没有使用任何关系,这只是一个简单的例子

CREATE TABLE test1(
  customSqlScripts VARCHAR(100)
)

CREATE TABLE test2(
 customer_Id INT PRIMARY KEY ,
 first_Name VARCHAR(100),
 last_name  VARCHAR(100)
)

 INSERT INTO test1 VALUES('Select first_Name from test2 where customer_Id=')
 INSERT INTO test2 VALUES('1','Rohit','Tiwari')

 DECLARE @Count INT
 DECLARE @iCount INT=0
 DECLARE @dummysql VARCHAR(100)

 SELECT @Count= Count(*) 
 FROM test2 
 WHERE last_name='Tiwari'

 WHILE(@icount<@count)
 BEGIN
  SELECT @dummysql =customSqlScripts 
  FROM test1
  SET @dummysql=@dummysql+'1'
  EXEC (@dummysql)
  SET @icount=@icount+1
 END