求帮忙看看怎么改代码

lakerskobemvp 2014-06-24 08:41:17

create PROC P_Delete
AS
BEGIN
DECLARE @p_id INT
SELECT @p_id = id FROM node WITH(NOLOCK) WHERE tablename = 'source_1'
DELETE TOP(1000) depart WHERE id < @p_id
return @@ROWCOUNT
END
GO

WHILE(@@ROWCOUNT=1000)
EXECUTE P_Delete
print @@ROWCOUNT

存储过程要实现删除dept表里id小于node表中tablename为source_1的p_id的所有数据,循环执行存储过程直到删除完毕
我的代码在循环部分有问题,求各位指点
...全文
95 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xdashewan 2014-06-24
  • 打赏
  • 举报
回复
引用 6 楼 lakerskobemvp 的回复:
@@ROWCOUNT时出了问题
调用存储过程的循环,拿不到你存储过程里的@@ROWCOUNT,要用output参数返回
lakerskobemvp 2014-06-24
  • 打赏
  • 举报
回复
引用 5 楼 xdashewan 的回复:
你这是什么应用每次一定只能删除1000条
给的一个要求,我加上while后就执行不了存储过程,打印出来的影响行数也为0,不知道是while条件有问题还是接受@@ROWCOUNT时出了问题
xdashewan 2014-06-24
  • 打赏
  • 举报
回复
你这是什么应用每次一定只能删除1000条
lakerskobemvp 2014-06-24
  • 打赏
  • 举报
回复
引用 3 楼 xdashewan 的回复:
[quote=引用 2 楼 lakerskobemvp 的回复:] 循环部分怎么改?
不需要循环了[/quote] 但是要求每次删除1000条,这个得循环执行存储过程啊
xdashewan 2014-06-24
  • 打赏
  • 举报
回复
引用 2 楼 lakerskobemvp 的回复:
循环部分怎么改?
不需要循环了
lakerskobemvp 2014-06-24
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:

DELETE t FROM depart t
INNER JOIN node AS n ON t.id < n.id and n.tablename = 'source_1'
一句sql就行了
循环部分怎么改?
xdashewan 2014-06-24
  • 打赏
  • 举报
回复

DELETE t FROM depart t
INNER JOIN node AS n ON t.id < n.id and n.tablename = 'source_1'
一句sql就行了

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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