3

SP1 の実行時に SP2 が SP1 内から実行されないことがわかりました。

以下は SP1 の構造です。

ALTER PROCEDURE SP1 AS BEGIN

Declare c1 cursor....

open c1 fetch next from c1 ...

while @@fetch_status = 0 Begin

...

Fetch Next from c1 end

close c1

deallocate c1

exec sp2

end

「出力ウィンドウ」が空であるため、SQL Server 2005 Management Studio の「出力ウィンドウ」に印刷された場合、PRINT ステートメントの出力が表示されません。

4

3 に答える 3

3

ストアド プロシージャ コードを単一のクエリとして実行するとどうなるでしょうか。PRINTexec の前後にステートメントを配置すると、両方の出力が表示されますか?

  • その場合は、ストアド プロシージャが実行されている必要があります。おそらく、それはあなたが望むことをしていません。
  • 印刷出力が表示されない場合は、サイクルに問題があります
  • 2 番目の出力が表示されず、最初の出力が表示される場合は、2 番目のストアド プロシージャに問題があります。
于 2008-10-04T14:46:28.570 に答える
0

@@ errorを使用して、前のステートメントの実行時にエラーが発生したかどうかを確認できます。

于 2009-01-22T14:52:01.500 に答える
0

参考になるかどうかはわかりませんが、私の経験から、最も一般的な理由は次のとおりです。

  1. sp2値にするパラメーターを取得します。nullつまり、文字列からその名前を作成し、そのうちの1つがnull.
  2. sp2内部にいくつかの条件があり、それらのいずれも true ではないためsp2、コードはまったく実行されません。つまり、パラメーターの 1 つが typevarcharである場合、 value を渡しVALUE、内部で確認しますが、渡される実際の値sp2V(varchar の長さが存在しないため)定義されています)。
  3. sp2それらの1つであるパラメータからクエリを構築しnull、クエリ全体も同様になりnullます。

の呼び出しのPRINT 前後に配置すると出力が表示されsp2ますか?

于 2008-10-20T19:48:26.380 に答える