.NET アプリケーションの T-SQL ストアド プロシージャから印刷出力を取得する
レガシー アプリケーションの移行では、多くの場合、エラー レポートや情報メッセージに PRINT
ステートメントを使用する T-SQL ストアド プロシージャの処理が必要になります。 この記事では、.NET 環境内でこの PRINT
出力をキャプチャする方法を説明します。
PRINT
出力のキャプチャ: 実現可能なソリューション
.NET アプリケーション内の T-SQL ストアド プロシージャから PRINT
ステートメントの出力を取得することができます。これは、プロシージャのロジック内に埋め込まれたデバッグ情報やエラー メッセージにアクセスするために非常に重要です。
C# 実装: イベント処理
この解決策には、データベース接続オブジェクトの InfoMessage
イベントをサブスクライブすることが含まれます。 これは C# コードの例です:
<code class="language-csharp">myConnection.InfoMessage += new SqlInfoMessageEventHandler(myConnection_InfoMessage); void myConnection_InfoMessage(object sender, SqlInfoMessageEventArgs e) { // Process the captured print message Console.WriteLine(e.Message); }</code>
コードの内訳:
myConnection
: ストアド プロシージャの実行に使用されるデータベース接続を表します。InfoMessage
イベント: このイベントは、データベース サーバーが PRINT
出力を含む情報メッセージを送信するたびにトリガーされます。e.Message
: このプロパティは、PRINT
ステートメントの内容を保持します。例: ストアド プロシージャと C# コード
メッセージを出力する単純なストアド プロシージャを考えてみましょう。
<code class="language-sql">CREATE PROCEDURE usp_PrintMessage AS PRINT 'This is a test message.';</code>
このプロシージャを実行して PRINT
出力をキャプチャするための対応する C# コードは次のとおりです:
<code class="language-csharp">SqlCommand cmd = new SqlCommand("usp_PrintMessage", myConnection); cmd.CommandType = CommandType.StoredProcedure; cmd.InfoMessage += myConnection_InfoMessage; // Subscribe to the event cmd.ExecuteNonQuery(); // Execute the stored procedure // The print message will be displayed on the console.</code>
InfoMessage
イベントをサブスクライブすることにより、C# アプリケーションはストアド プロシージャによって生成された PRINT
出力を効果的にインターセプトして処理し、堅牢なエラー処理と情報ログを有効にします。
以上が.NET で T-SQL ストアド プロシージャから印刷出力をキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。