0

ストアド プロシージャを仮想的に実行し、返された列を取得したいと考えています。私はfmtonly以下のように使用します:

set fmtonly on
exec spName null
set fmtonly off

しかし、fmtonly を使用するとすべてのコード行が実行され、この作業の結果はエラーになります。この作業を行うための解決策はありますか?

4

1 に答える 1

3

You need to use sp_describe_first_result_setwhich is new to SQL Server 2012. これには、入力パラメーター (少なくとも型) を指定する必要があることに注意してください。

T-SQL の開発では、どのプロシージャが呼び出され、どのような結果セットが期待されるかを知っていることが期待されます。SQL Server 2012 より前は、プロシージャー出力と必須パラメーターの動的、ランタイム、ディスカバリーのサポートはほとんどありませんでした。この新しい手順はsp_describe_undeclared_parameters、利用可能なプログラミング API サーフェスを調査する必要があるツールを作成するために使用できます。これらが 2012 年に追加されたという事実そのものが、2012 年以前は同等のものを適切に処理できないことを示しているはずです。ループバック リンク サーバーのようなソリューションには多くの問題があります。主な理由は、実際にコードを実行して壊滅的な影響を与える可能性があるためです。

于 2012-11-12T08:54:47.813 に答える