0

いくつかの関数を使用するストアド プロシージャがあり、それらの関数はいくつかのデータを比較しています。例えば:

機能 1:

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 に答える