2008-09-23 62 views
1

我的存儲過程如下從SQL Server 2005中的SQL instegartion包調用存儲過程語法

EXEC? = Validation.PopulateFaultsFileDetails? ,0

雖然我不知道是什麼的?意味着

+0

你從哪兒弄來的 「EXEC?= Validation.PopulateFaultsFileDetails?,0」?從SQL事件探查器或從其他地方? – TcKs 2008-09-23 09:48:27

回答

1

當該SQL statment被稱爲的第一個參數,包括問號(?)將被替換。第一個將被一個將接收存儲過程的返回值的變量替換。第二個將被一個將被傳入存儲過程的值替換。使用此語句的代碼看起來是這樣的(僞):

dim result 
SQL = "EXEC ? = Validation.PopulateFaultsFileDetails ? , 0" 
SQL.execute(result, 99) // pass in 99 to the stored proc 
debug.print result 

這給你的3個優點:

  1. 可以重新使用SQL的相同的位值不同
  2. 您可以拿起返回值並測試成功/錯誤
  3. 如果您傳入的值是字符串,則應正確轉義您的值,從而降低應用程序中SQL注入漏洞的風險。
1

的?可以說變量,確切地說,是一個參數。首先 ?是所存儲的prcoedure的返回值,第二個是存儲過程

0

感謝我欣賞的答案。

我是能夠成功地執行使用 聲明存儲過程@FaultsFileName VARCHAR DECLARE @FaultsFileID INT EXEC @FaultsFileID = Validation.PopulateFaultsFileDetails 'SameMonth Test.txt的',@FaultsFileID SELECT @FaultsFileID

但當我在集成包中傳遞輸入參數爲'SameMonth Test.txt'時,出現如下錯誤:

參數名稱不能是序數和命名類型的混合。「。可能的失敗原因:查詢問題,「ResultSet」屬性設置不正確,參數設置不正確,或連接未正確建立。