【发布时间】:2008-12-10 19:11:30
【问题描述】:
因为我是新手,所以我正在尝试注销我编写的存储过程可能出现的任何错误。我了解 SQL 2005 中的 Try/Catch 以及 error_procedure()、ERROR_MESSAGE() 和其他内置函数。我不知道该怎么做是捕获导致更新错误的记录。
我可能会使用游标并一次循环并更新一行。然后在循环中设置一个值并报告该值。但这似乎违背了使用 SQL 的目的。
任何关于在哪里研究这个问题的想法或指针都非常感谢。我不完全理解 RowNumber() 我可以以某种方式使用它吗?有点像抓住稻草了。
干杯和感谢
鲍勃
我使用的是 SQL 2005。
编辑
我真的不想在大多数情况下使用交易,因为它只是用于报告目的。所以我正在做的一个例子是:
/******************************************************************************
Now get update the table with the current worker. That depends on the
current status of the loan.
******************************************************************************/
UPDATE #table SET currWorker = tblUser.UserLogonName
FROM tblUser
JOIN tblLoanInvolvement ON tblLoanInvolvement.invlUnderwriterDeptID = tblUser.userID
WHERE tblLoanInvolvement.LOANid = #table.loanid
AND #table.currstatus in('R_UW_Approved','R_Submitted to Underwriting')
UPDATE #table SET currWorker = tblUser.UserLogonName
FROM tblUser
JOIN tblLoanInvolvement ON tblLoanInvolvement.invlProcessorID = tblUser.userID
WHERE tblLoanInvolvement.LOANid = #table.loanid
AND #table.currstatus in('R_UW Approved With Conditions','R_Loan Resubmitted','R_UW_Suspended','R_Submitted to Processing')
UPDATE #table SET currWorker = tblUser.UserLogonName
FROM tblUser
JOIN tblLoanInvolvement ON tblLoanInvolvement.invlCloserID = tblUser.userID
WHERE tblLoanInvolvement.LOANid = #table.loanid
AND #table.currstatus in('R_Docs Out','R_Ready to Close','R_Scheduled to Close and Fund','Scheduled To Close')
因此,如果某一行没有正确更新,我不想丢失整个内容。但是知道导致问题的#table.loanid 的值会非常方便。
感谢您的宝贵时间。
【问题讨论】:
标签: sql sql-server sql-server-2005