将存储过程的返回值解析为表/变量

时间:2013-08-30 12:45:51

标签: sql sql-server stored-procedures

我有存储过程,它使用了几个函数,而这些函数正在比较一些数据。 例如:

功能一:

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。我希望它包含函数的返回消息,它在存储过程中使用。

1 个答案:

答案 0 :(得分:0)

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

 EXECUTE Sales.uspGetEmployeeSalesYTD @SalesYTD = @SalesYTDBySalesPerson OUTPUT