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;

它有效,但“结果”是空的。我希望它包含来自函数的返回消息,这些消息在存储过程中使用。

4

1 回答 1

0

您必须修改存储过程才能从中获取任何返回值。您需要在存储过程中声明一个输出变量,然后将该消息存储在变量中,并在最后一个调用过程中,如:

 EXECUTE Sales.uspGetEmployeeSalesYTD @SalesYTD = @SalesYTDBySalesPerson OUTPUT
于 2013-08-30T13:08:02.427 回答