用户名: 密码: 验证码:           网站地图 高级搜索 RSS订阅 收藏本站
Google
您的位置:首页>>网络编程>>MSSQL>>阅读资讯:存储过程的递归中使用游标的冲突问题解决方法

存储过程的递归中使用游标的冲突问题解决方法

[ 来源: | 阅读:次 | 更新日期:2007-10-6 14:14:18 | 评论 0 条 | 我要投稿 ]

昨天在学习存储过程的时候,由于使用了递归,出现了游标冲突的问题。经过今天一天的努力,终于解决了。现在将程序贴在这里,供大家参考。 字串6

DesignBOMDetail表结构如下图:

字串7

存储过程的递归中使用游标的冲突问题解决方法 字串5

-- =============================================
-- Author:    徐昌煜
-- Create date:   2006-9-16
-- Description:  物料非法递归检查,调用了P_USE_ISSUBPARTRECURSION_XU
-- =============================================
ALTER PROCEDURE dbo.P_ISSUBPARTRECURSION_XU
@MAINPARTID VARCHAR(20)='',@SUBPARTID VARCHAR(20)='',@ISRECURSION BIT OUTPUT
AS
BEGIN
 DECLARE @SUBPARTID_TEMP VARCHAR(20),@RECORDNUM INT,@ID INT
 IF @MAINPARTID=@SUBPARTID
 BEGIN
  SET @ISRECURSION=1
  RETURN 1
 END
 ELSE
 BEGIN
  SELECT * FROM DesignBOMDetail WHERE MainPartID=@SUBPARTID
  SELECT @RECORDNUM=@@ROWCOUNT
  IF @RECORDNUM=0
  BEGIN
   SET @ISRECURSION=0
   RETURN 0
  END
  ELSE 
  BEGIN
   DECLARE @MAIN_CUR CURSOR 字串8
   EXECUTE P_USE_ISSUBPARTRECURSION_XU @SUBPARTID,@MAIN_CUR OUTPUT
    FETCH NEXT FROM @MAIN_CUR INTO @ID
    WHILE @@FETCH_STATUS=0
    BEGIN
     SELECT @SUBPARTID_TEMP=SubPartID FROM DesignBOMDetail WHERE ID=@ID
     IF @SUBPARTID_TEMP=@MAINPARTID
     BEGIN
      SET @ISRECURSION=1
      RETURN 1
     END
     ELSE
     BEGIN
      EXECUTE P_ISSUBPARTRECURSION_XU @MAINPARTID,@SUBPARTID_TEMP,@ISRECURSION
      IF @ISRECURSION=1
      BEGIN
       RETURN 1
      END
     END
     FETCH NEXT FROM @MAIN_CUR INTO @ID 字串8
    END
  END
   END
   SET @ISRECURSION=0
   RETURN 0
END
-- =============================================
-- Author:    徐昌煜
-- Create date:   2006-9-16
-- Description:   使用P_ISSUBPARTRECURSION_XU时,生成游标。
-- =============================================
ALTER PROCEDURE dbo.P_USE_ISSUBPARTRECURSION_XU
@SUBPARTID VARCHAR(20)='',@TEMP_CURSOR CURSOR VARYING OUTPUT
AS
BEGIN
 SET @TEMP_CURSOR=CURSOR LOCAL FOR SELECT ID FROM DesignBOMDetail WHERE MainPartID=@SUBPARTID
 OPEN @TEMP_CURSOR
END
 /* SET NOCOUNT ON */
 RETURN

月落网


Tags:存储过程的递归中使用游标的冲突问题解决方法
责任编辑:
您的评论
用户名:新注册) 密码: 匿名评论 [所有评论]

·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为