如何批量执行存储过程里的增删改操作?

setfocus 2003-08-05 03:03:20
在一个存储过程里如何批量执行下面的增删改操作?最好能举出实例
create myproc
@f1
@f2
@f3
as
if @f1=0
begin
insert t1(f1,f2,f3) values (@f1,@f2,@f3)
end
if @f1=1
begin
update t1 set f1=@f1,f2=@f2,f3=@f3
end
if @f1=2
begin
delete t1
end
GO
...全文
66 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
firetoucher 2003-08-05
  • 打赏
  • 举报
回复
2 wdsimon(老王)
执行多少次你可以通过定义cursor或者在循环里判断定义
wdsimon 2003-08-05
  • 打赏
  • 举报
回复
firetoucher(风焱) :
有N条记录,不是调用存储过程N次?

kuangning 2003-08-05
  • 打赏
  • 举报
回复
恩;
给你一个思路。
存储过程中的定义一个字符串参数S,长度比如256。
要操作的表有3个字段。那么你s中存储的就是'1,200,300,4,5,6,7,8,9,';
在存储过程中循环,每次从s中取3个值出来。第一次取1,200,300。插入到表中。第二次取
4,5,6..
执行完过程后,表中会增加3条记录
1 200 300
4 5 6
7 8 9
可能会用到字符的处理函数等。自己看看sql server 方面的书吧
firetoucher 2003-08-05
  • 打赏
  • 举报
回复
create myproc2
as
DECLARE Employee_Cursor CURSOR FOR
SELECT LastName, FirstName FROM Northwind.dbo.Employees
OPEN Employee_Cursor
FETCH NEXT FROM Employee_Cursor
WHILE @@FETCH_STATUS = 0
BEGIN
Exec myproc --调用
FETCH NEXT FROM Employee_Cursor
END
CLOSE Employee_Cursor
DEALLOCATE Employee_Cursor

return
wdsimon 2003-08-05
  • 打赏
  • 举报
回复
如果SQL能传数组就好了,直接传递一个三维数组进来,循环一下就可以解决了。
如果把要更新的数据写在一个临时表里也可解决,然后传表名进来,但是不是很麻烦
要不,有N条记录,调用存储过程N次


UP一下。
flyingkiller 2003-08-05
  • 打赏
  • 举报
回复
没明白是什么意思。
setfocus 2003-08-05
  • 打赏
  • 举报
回复
UP!

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧