2013-08-30 35 views
0

我有存儲過程,它使用了幾個函數,並且這些函數正在比較一些數據。 例如:從存儲過程解析返回值到表/變量

功能之一:

if @x is not null 
    begin 
     if @x > @y 
      return 'y cannot be less than x' 

和存儲過程中,我宣佈了一些變量它們是我們的X和Y。

然後,我開始新的事務,例如:

begin tran test; 
    exec [dbo].[My_stored_procedure] # stored prodecure which using function I wrote above.  

       'some_value','some_value' # our X and Y 
       rollback test; 

和一切工作正常,當從功能條件(X> Y)滿足,那麼我們可以看到返回的消息「'Y不能少於X'」。我希望那條消息能夠保存在變量或表中,但不需要編輯存儲過程/函數。我試過類似的東西:

begin tran test; 
     CREATE TABLE stored_test 
     (
     result nvarchar(2000) 
    ) 
      INSERT INTO stored_test(result) exec [dbo].[My_stored_procedure] 

      'some_value','some_value' 
      rollback test; 

它的工作原理,但「結果」是emtpy。我希望它包含來自函數的返回消息,這些消息在存儲過程中使用。

+0

你是什麼意思「返回消息」?爲了使'insert into ... exec'工作,你必須通過在程序中使用'select <你的函數>()'來返回程序中的記錄集,例如。 –

+0

回滾會取消所有操作,並且您的功能在哪裏 –

+0

是的,它會取消所有操作,但在此之前我應該​​看到SELECT的結果,我只是沒有將它包含在下面的代碼中,這是我的錯誤。 –

回答

0

您必須修改存儲過程以從中獲取任何返回值。您需要在存儲過程中聲明輸出變量,然後該消息存儲在變量,並像上次通話過程:

EXECUTE Sales.uspGetEmployeeSalesYTD @SalesYTD = @SalesYTDBySalesPerson OUTPUT