20行储存过程的语法错误,请各位赐教!

DriftKing 2014-11-25 11:37:40
刚学写SQL Server 存储过程,现在想写个简单的递归调用,但老有语法错误,请高手赐教。
错误如下:
消息 102,级别 15,状态 1,过程 pr_fab,第 23 行
'.' 附近有语法错误。
dbo.pr_fab(@tempId)

换成"pr_fab(@tempId)",则报如下错误:
消息 102,级别 15,状态 1,过程 pr_fab,第 23 行
'@tempId1' 附近有语法错误。




CREATE PROCEDURE pr_fab
(
@id AS int
)

AS
BEGIN
DECLARE @tempId int
IF (dbo.fn_hasChildren(@id)>0)
BEGIN
DECLARE @temp TABLE(id int)

INSERT INTO @temp(id) SELECT agentsid FROM Sheet1 WHERE enrollerid=@id
WHILE EXISTS(SELECT id from @temp)
BEGIN
SET ROWCOUNT 1
select @tempId = [id] from @temp
dbo.pr_fab(@tempId)
SET ROWCOUNT 0
delete from @temp where [id] = @tempId
END
END

END
...全文
133 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
DriftKing 2014-11-26
  • 打赏
  • 举报
回复
非常感谢! 对MS SQL语法确实不熟悉,不知道SQL递归有层数限制吗? 最有还是用JAVA实现的。但一直想用过程实现。
發糞塗牆 2014-11-25
  • 打赏
  • 举报
回复
CREATE PROCEDURE pr_fab ( @id AS int ) AS BEGIN DECLARE @tempId int IF (dbo.fn_hasChildren(@id)>0) BEGIN DECLARE @temp TABLE(id int) INSERT INTO @temp(id) SELECT agentsid FROM Sheet1 WHERE enrollerid=@id WHILE EXISTS(SELECT id from @temp) BEGIN SET ROWCOUNT 1 select @tempId = [id] from @temp exec pr_fab @tempId--你这个又不是函数,干嘛用括号 SET ROWCOUNT 0 delete from @temp where [id] = @tempId END END END

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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