いくつかの関数を使用するストアド プロシージャがあり、それらの関数はいくつかのデータを比較しています。例えば:
機能 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;
そしてそれは機能しますが、「結果」は空です。そして、ストアドプロシージャで使用される関数からの戻りメッセージを含めたいです。