私は 1500 行のストアド プロシージャを継承しました。このストアド プロシージャは、プロシージャの存続期間中に頻繁に状態を変更する無数の変数を宣言します。追跡が非常に困難であることが判明した論理エラーがあり、そのため、ログテーブルに有限時間変数を書き込むように依頼されました。私の解決策は、各変数を取得してXMLに詰め込み、インデックスなしでテーブルに記録して、書き込み中に可能な限り高速にすることです。これは少し最後の手段ですが、これに対する解決策には数百万ドルの不一致があり、掘り下げる時間はあまりありません。
したがって、解決策は、proc を実行する 1 週間の間、次のようになります。
- 手順 データを変数に宣言して初期化します。
- 状態を記録するために関数が呼び出されます
- 手順は、状態を変更するより多くのコードを実行します
- 状態を記録するために関数が呼び出されます
- 手順はさらに多くのことを行います。
- 状態を記録するために関数が呼び出されます。
私の質問はこれです。
DECLARE @TESTSTRING VARCHAR(MAX)
DECLARE @TESTINTEGER INT
DECLARE @TESTDATE DATETIME = GETDATE()
SELECT @TESTSTRING, @TESTINTEGER, @TESTDATE FOR XML...
このように何らかの方法で変数を選択するだけで、変数を XML として出力できますか? 通常、FOR XML 構文では、FROM 句の後に記述する必要があります。この場合、私は持っていません。そうでない場合は... これはいくらですか?
DECLARE @TESTSTRING VARCHAR(MAX)
DECLARE @TESTINTEGER INT
DECLARE @TESTDATE DATETIME = GETDATE()
SELECT
*
FROM
(SELECT @TESTSTRING AS TESTSTRING, @TESTINTEGER AS TESTINTEGER, @TESTDATE AS TESTDATE) AS S
FOR XML PATH('VAR'), ROOT('TESTTABLE')