0

以下場景的最佳方法是什麼?在我的C#程序中,我有一些SQL命令,如UPDATE,INSERT,DELETE。我可以在我的C#程序中執行它們(工作正常),但是當存儲過程中的一個到達最後一行時,我需要執行這些sql命令。所以我打算將sql命令存儲在同一個數據庫的某個臨時表中,然後我想在存儲過程中打開此表並逐個執行。如何在sql存儲過程中從臨時表執行sql腳本

什麼是在存儲過程中打開表格然後根據某些條件遍歷表格的最佳方法(如select * from TempStagingTable where customerId ='1000')。如果它返回10條記錄,我想循環它們並執行存儲在名爲「CustomSqlScript」列的sql命令。

PS:我正在使用SQL 2008 R2。

+0

不知道這是否會有所幫助,但我將 循環遍歷所有記錄後創建一個動態SQL,然後使用'exec'執行該動態SQL。您也可以一次'執行'單個語句。 – Nilesh

回答

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 @[email protected]+'1' 
    EXEC (@dummysql) 
    SET @[email protected]+1 
END 
相關問題