因为我是新手我想退出与我编写存储过程中可能出现的任何错误。我理解SQL 2005中的Try/Catch和error_procedure(),ERROR_MESSAGE()以及其他内置函数。我无法弄清楚如何做的是捕获什么记录导致更新错误。使用try/catch语句进行更新
我大概可以使用一个游标循环并同时更新一行。然后在循环中设置一个值并报告该值。但是这似乎破坏了使用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的价值将非常方便。
谢谢你的时间。
谢谢Paul,我想我会这么做的。我很难第一次描述这个问题,再次感谢您的回复。 – 2008-12-10 21:39:13