如何在SQL SERVER数据库中存储过程使用循环语句进行插入操作,当插入失败后返回错误码

如题所述

第1个回答  2013-03-15
自己写吧,给你的建议是在插入报错的时候,向一张监控表(自己单独创建的用来监控过程执行情况)插入一条异常数据,当然这条数据要包括具体报错信息。我写过oracle的,sql server没写过。来自:求助得到的回答
第1个回答  2013-03-15
如果它是一个两个INSERT语句是没有必要使用存储过程,或会为你带来很多的存储过程管理。 如果大量数据写入,建议你使用存储过程,因为数据库引擎执行的动态语句来决定执行计划,应编制,执行大量的语句,这种耗时的工作的一部分是相当可观的。
第2个回答  2013-03-15
用游标,存储过程自己本身不能判断插入是否失败,它是脚本性语言。追问

可以帮忙做个例子么?初学,不太懂

追答

没有具体的数据库不好说,我倒是有现成的例子,不知道你能不能看懂。

追问

贴出来学习下,呵呵

追答

前面定义游标,后面循环按照游标条件插入数据,表结构复杂些,也不是很难懂
declare @ClassID int
declare cur_class CURSOR for SELECT ClassID FROM #dept_class
open cur_class
fetch next from cur_class into @ClassID
while(@@FETCH_STATUS = 0)
begin
--取出每个节点的6个最新文档sp_Web_GetNewDoc 6, '2615'
insert into #doc
(
SuperClass,
DocID,
ClassID,
DocTitle,
DocApprover,
DocApproveDate,
DocViewedTimes,
DocType,
DocAddedBy,
DocAddedDate,
docDeletion,
DocLastViewer,
DocLastViewDate)
exec sp_Web_GetNewDoc @top,@ClassID

fetch next from cur_class into @ClassID
end
Close cur_class
DEALLOCATE cur_class

本回答被提问者采纳
第3个回答  2013-03-15
begin try
while 循环条件 begin
insert 操作

end

end try
begin catch
print error_number()

end catch
相似回答
大家正在搜