0

こんにちは、SQL サーバー ストアド プロシージャのアクセサーを生成する T4 テンプレートを作成しています。SMO と CommandBuilder の DeriveParameters メソッドを組み合わせて使用​​して、必要な情報をほぼすべて取得しました。

ただし、ストアド プロシージャが返す結果セットの数とその数を判断する方法を見つけることができません。

本質的に、Codesmiths SchemaExplorer CommandResults.Count プロパティを複製する方法を探しています。

sproc のテストを解析する道をたどりたくありません。

事前に乾杯。

4

2 に答える 2

2

SQL Server は、ストアド プロシージャが返す可能性のある結果セットの数に関するメタデータを一切保存しません。0、1、または n が存在する可能性があり、ストアド プロシージャのロジック、渡すパラメーター値、システムの状態などに応じて変化する可能性があります。メタデータを取得するときに説明できないすべてのもの. 2012 年の新しいメタデータ機能でさえ、ストアド プロシージャ内の最初の結果セットの形状を記述することだけを扱います。それ以上の結果セットがある場合は、自分で処理する必要があります。

いいえ、これを確実に行う方法はないと思います。さまざまな要因によって結果セットの数を変更できない場合でも、できる最善の方法は、くだらないSET FMTONLY ON;トリック (独自の一連の問題があります) を使用して、結果をカウントすることです。

SET FMTONLY ON;
EXEC dbo.whatever;

ストアド プロシージャの実行によってシステムの状態が変化する場合、これは明らかに良くありませんが、レポート スタイルのストアド プロシージャの場合、多くの場合はおそらく問題ありません。

于 2012-08-30T13:50:55.967 に答える
0

私の知る限り、ストアドプロシージャの本体を解析する以外にそれを行う方法はありません(条件が含まれている可能性があり、結果の数は条件に応じて変化する可能性があることに注意してください)。

于 2012-08-30T13:42:14.140 に答える