デバッグ時に SQL Server Management Studio (SSMS) のテーブル値変数の値 (行とセル) を確認できますか? はいの場合、どのように?
10 に答える
DECLARE @v XML = (SELECT * FROM <tablename> FOR XML AUTO)
テーブルの内容を表示するポイントに上記のステートメントを挿入します。テーブルの内容は、ローカル ウィンドウで XML として表示されるか、または@v
監視ウィンドウに追加できます。
この Microsoft Connect リンクによると、これはまだ実装されていません: Microsoft Connect
このプロジェクトhttps://github.com/FilipDeVos/sp_selectsp_select
には、一時テーブルからの選択を可能にするストアド プロシージャがあります。
使用法:
exec sp_select 'tempDb..#myTempTable'
ストアド プロシージャのデバッグ中に、新しいタブを開いてこのコマンドを実行すると、一時テーブルの内容を確認できます。
In the Stored Procedure create a global temporary table ##temptable and write an insert query within your stored procedure which inserts the data in your table into this temporary table.
Once this is done you can check the content of the temporary table by opening a new query window. Just use "select * from ##temptable"
選択クエリを使用して、確認したい場所でテーブル変数を表示するだけです。
http://www.simple-talk.com/sql/learn-sql-server/management-studio-improvements-in-sql-server-2008/
これはプラグインなしでは不可能だという結論に達しました。
SQL Server Profiler 2014 は、テーブル値パラメーターの内容を一覧表示します。以前のバージョンでも動作する可能性があります。ストアド プロシージャ グループと TextData 列で SP:Starting または RPC:Completed イベントを有効にし、ログのエントリをクリックすると、テーブル変数の挿入ステートメントが表示されます。その後、テキストをコピーして、Management Studio で実行できます。
出力例:
declare @p1 dbo.TableType
insert into @p1 values(N'A',N'B')
insert into @p1 values(N'C',N'D')
exec uspWhatever @PARAM=@p1
テーブルを選択して、そのように変数を表示しないのはなぜですか?
SELECT * FROM @d
申し訳ありませんが、私はパーティーに少し遅れていますが、後日この質問に出くわした人のために、ストアドプロシージャでこれを行う最も簡単な方法を見つけました:
- 先頭で宣言および初期化されたプロシージャ パラメータを使用して、新しいクエリを作成します。
- プロシージャの本文に貼り付けます。
- テーブル変数がデータで初期化された直後に、古き良き選択クエリを追加します。
- 3. が手順の最後のステートメントでない場合は、同じ行にブレークポイントを設定し、デバッグを開始して、ブレークポイントまでまっすぐ進みます。
- 利益!!
messi19の答えは、私のものよりも単純で、ほとんどの場合仕事をするので、私見として受け入れられるべきですが、あなたが私のようで、検査したいループ内にテーブル変数がある場合、これはうまく仕事をします多大な労力や外部 SSMS プラグインなしで。