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 は、ログ テーブルに書き込み、ログ メッセージを印刷できます。