0

spyProcedure を使用しようとしていますが、期待どおりに動作しません。以下のシナリオは、私がどこで苦労しているのか教えてください。

**CREATE PROC [dbo].[proc3](@id int , @marks int out)
as
begin
   select @marks = marks from student where id=@id;
end**


CREATE PROC [dbo].[proc4](@id int , @marks int )
as
begin
   print 'inside proc4 id ' + cast(@id as varchar) + ' marks ' +  cast(@marks as varchar);
   update student set marks = @marks where id=@id;
end


**CREATE PROC [dbo].[proc6](@id1 int , @id2 int) 
as
begin
      declare @marks int;
      EXEC tSQLt.SpyProcedure 'proc3' , 'SET @marks = 80';

    set @marks  = @marks + 20;
    print ' marks = ' + cast(@marks as varchar);
    EXEC proc4 @id  = @id2 , @marks = @marks;
end** 

EXEC proc6 @id1 = 1 , @id2 = 2;
GO

上記を呼び出すと、「EXEC proc4 @id = @id2、@marks = @marks;」を実行/呼び出すことができません。しかし、「EXEC tSQLt.SpyProcedure 'proc3' , 'SET @marks = 80';」とコメントすると、実行できます。

どこが間違っているのか、正しく実行する方法を教えてください。

ありがとうございました。

4

1 に答える 1