簡體   English   中英

如何捕獲sproc的返回值?

[英]How to capture return value of sproc?

我有一個sproc,我無法修改簽名,它有一個SELECT語句作為它的最后一行:

SELECT userid = @userid

其中@userid在sproc中聲明(未傳入)。 有沒有辦法在sproc之外的變量中捕獲userid的值?

如果我想通過修改最后一行來捕獲兩個值:

SELECT userid = @userid, somevar = @somevar

會影響使用這個sproc的任何現有代碼路徑(比如在.NET中調用)嗎? 如果沒有,我如何捕獲sproc之外的兩個值?

這些捕獲都將在SQL中完成,而不是應用程序語言。

執行類似SELECT的存儲過程實際上並不發送返回值,而是發送回結果集。 在SQL中捕獲它的一種方法是將結果插入臨時表。

CREATE TABLE #MyTemp 
  (UserId INT, 
  SomeVar VARCHAR(50))

INSERT #MyTemp
  EXEC MySproc

此時,您可以從#MyTemp中選擇SELECT到本地變量。

是否在結果中添加另一列將破壞任何現有的應用程序代碼實際上是一個很大的“它取決於”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM