2013-12-19 51 views
2

我有一個存儲過程,它是完美的執行,當我使用:如何到位單個值傳遞多個值到存儲過程

exec spSampleAmount 12212,0 

現在我需要通過像「12212, 12213,12214,12215「,這些值來自另一個查詢。如何將此查詢結果傳遞給2個參數存儲過程。

exec spSampleAmount param1,param2; 

param1有一組值。

+0

如果存儲過程有兩個參數,你不能傳遞更多解決方案(除非有是可選參數)。重寫存儲過程。 –

+0

重寫spSampleAmount,分割「12212,12213,12214,12215」並使用它。因此,您還需要stringsplit函數,它將「12212,12213,12214,12215」並返回表。或者不要修改spSampleAmount而是循環在proc中你打電話給這個,分開參數並逐一傳球。現在你的球場上有球。 – KumarHarsh

回答

0

將第一個查詢的輸出存儲在參數中。首先聲明參數,然後將第一個查詢的值分配給該參數,然後調用exec命令來執行存儲過程。

DECLARE @V_Param1 VARCHAR(1000); 

SELECT @V_Param1 = Rest of query 

EXEC spSampleAmount @V_Param1, 0 
+0

@shah感謝您的回答 SELECT ID FROM頭WHERE日之間'10 -1-2013' 和'11 -1-2013' 上面的查詢返回12行,因此錯誤來了這樣的「子查詢返回的值超過1,當子查詢遵循=,!=,<, <= , >,> =或者子查詢用作表達式時,這是不允許的。 –

+0

不客氣 –

+0

你能告訴我如何克服這個錯誤。 –

0

如果它被SSRS調用它是可能的,我不知道它是如何工作的,但它是。

你有2種方式從ssrs,sql query和write execute調用存儲過程。或者選擇執行存儲過程。

通過這種方式,您可以將選擇從多個項目選擇組合框傳遞到存儲過程,並在您的存儲過程中執行:myparam in(@paramreceived)。

它應該也可以在.Net中。

我想這樣做在TSQL和我從來沒有成功過,所以我interrested太多,如果存在這一問題

相關問題