将存储过程结果保存为文件

时间:2012-11-24 05:57:25

标签: sql-server-2008-r2 silverlight-5.0

我有存储过程,在proc 打印某些结果,如

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

是否可以在从UI调用打印结果时将其保存在文件中。之后,我们必须将该文件邮寄给用户,并要求下载该文件

1 个答案:

答案 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日志消息。