ホームページ > バックエンド開発 > C++ > .NET で T-SQL ストアド プロシージャから印刷出力をキャプチャするにはどうすればよいですか?

.NET で T-SQL ストアド プロシージャから印刷出力をキャプチャするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-17 16:26:11
オリジナル
975 人が閲覧しました

How Can We Capture Print Output from a T-SQL Stored Procedure in .NET?

.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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート