0

私はストアドプロシージャを持っています、procで次 のような特定の結果を印刷します

Print '-- Start Transection--'
Print 'Transection No = ' + @TransectionId     
...
...
Print 'Transection Success'
Print '-- End Transection--'

UIから呼び出している間、印刷された結果をファイルに保存することは可能ですか?その後、そのファイルをユーザーにメールで送信し、そのファイルのダウンロードを要求する必要があります

4

1 に答える 1

0

PRINT はログ記録とデバッグを目的としており、呼び出し元に何かを返すために使用しないでください。

ここに提案があります: PRINTing の代わりに、ログ テーブルに書き込み、loggingID を返します。次に、アプリからこのテーブルをクエリし、ファイルに書き込みます。

例: 2 つのテーブルを作成する

CREATE TABLE Logging
(
    LoggingID int IDENTITY(1,1) PRIMARY KEY,
    Created datetime    
)

CREATE TABLE LoggingDetail
(
    LoggingDetailID int IDENTITY(1,1) PRIMARY KEY,
    LoggingID int FOREIGN KEY REFERENCES Logging,
    LoggingText varchar(500)
)

トランザクションの開始時に、新しい loggingID を作成します。

INSERT INTO Logging (Created) VALUES (GETUTCDATE())
DECLARE @loggingID INT = @@IDENTITY

ログ メッセージを印刷する代わりに、次のようにします。

INSERT INTO LoggingDetail (LoggingID, LoggingText) VALUES (@loggingID,
'-- Start Transection--')

sproc の最後で、@loggingID を呼び出し元に返します。LoggingDetail テーブルからログ メッセージを取得して、ファイルに書き込むことができるようになりました。

SELECT LoggingText FROM LoggingDetail WHERE LoggingID=<loggingID> ORDER BY LoggingDetailID

INSERT を別々の sproc にカプセル化することをお勧めします。これらの sproc は、ログ テーブルに書き込み、ログ メッセージを印刷できます。

于 2012-11-24T06:04:41.243 に答える