我有存储过程,在proc 打印某些结果,如
Print '-- Start Transection--'
Print 'Transection No = ' + @TransectionId
...
...
Print 'Transection Success'
Print '-- End Transection--'
是否可以在从UI调用打印结果时将其保存在文件中。之后,我们必须将该文件邮寄给用户,并要求下载该文件
答案 0 :(得分:0)
PRINT用于记录和调试目的,不应该用于向调用者返回任何内容。
这是一个建议:代替PRINTing,写入日志表并返回loggingID。然后,从您的应用程序中查询此表并写入文件。
示例:创建两个表
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中可能是个好主意。那些sprocs然后可以写入日志表和 PRINT日志消息。