| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 638 人关注过本帖
标题:求教关于单选改成多选的存储过程的难题
只看楼主 加入收藏
SuperRen
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-6-25
收藏
 问题点数:0 回复次数:4 
求教关于单选改成多选的存储过程的难题

刚接手一套程序, 需要根据客户最新需求,把原来需要用户输入所属标签的方式,改成多选的形式
以下是我修改后的MSSQL存储过程, 因为不熟悉存储过程, 所以照着例子修改, 但调试起来总是出错.
出错表现为: 数据库只能记录连续的几个多选项, 如果用户在选择一二三五这四个选项时,那么第五个就不能记录下来.
超级郁闷,特来宝地求救....

CREATE PROCEDURE [dbo].[SP_QUAN_UPDATEQUAN]
@IN_QUANID VARCHAR(60),
@IN_QUANNAME VARCHAR(50),
@IN_QUANHOST VARCHAR(50),
@IN_QUANMEMO VARCHAR(1000),
@IN_ISPUBLIC VARCHAR(1),
@IN_LABELNAME1 VARCHAR(20),
@IN_LABELNAME2 VARCHAR(20),
@IN_LABELNAME3 VARCHAR(20),
@IN_LABELNAME4 VARCHAR(20),
@IN_LABELNAME5 VARCHAR(20),
@IN_LABELNAME6 VARCHAR(20),
@IN_LABELNAME7 VARCHAR(20),
@IN_LABELNAME8 VARCHAR(20),
@IN_LABELNAME9 VARCHAR(20),
@IN_LABELNAME10 VARCHAR(20),
@IN_LABELNAME11 VARCHAR(20),
@IN_LABELNAME12 VARCHAR(20),
@IN_LABELNAME13 VARCHAR(20),
@IN_LABELNAME14 VARCHAR(20),
@IN_LABELNAME15 VARCHAR(20),
@IN_LABELNAME16 VARCHAR(20),
@IN_LABELNAME17 VARCHAR(20),
@IN_LABELNAME18 VARCHAR(20),
@IN_LABELNAME19 VARCHAR(20),
@IN_LABELNAME20 VARCHAR(20),
@IN_LABELNAME21 VARCHAR(20),
@IN_LABELNAME22 VARCHAR(20),
@IN_LABELNAME23 VARCHAR(20),
@IN_LABELNAME24 VARCHAR(20),
@IN_LABELNAME25 VARCHAR(20),
@IN_LABELNAME26 VARCHAR(20),
@IN_LABELNAME27 VARCHAR(20),
@IN_LABELNAME28 VARCHAR(20),
@IN_LABELNAME29 VARCHAR(20),
@IN_LABELNAME30 VARCHAR(20)
AS

DECLARE @I TINYINT
DECLARE @LABELID INT
DECLARE @LABELNAME VARCHAR(20)
DECLARE @MONTHADDSTIME DATETIME
DECLARE @OLDLABELID INT
DECLARE @OLDLABELID1 INT
DECLARE @OLDLABELID2 INT
DECLARE @OLDLABELID3 INT
DECLARE @OLDLABELID4 INT
DECLARE @OLDLABELID5 INT
DECLARE @OLDLABELID6 INT
DECLARE @OLDLABELID7 INT
DECLARE @OLDLABELID8 INT
DECLARE @OLDLABELID9 INT
DECLARE @OLDLABELID10 INT
DECLARE @OLDLABELID11 INT
DECLARE @OLDLABELID12 INT
DECLARE @OLDLABELID13 INT
DECLARE @OLDLABELID14 INT
DECLARE @OLDLABELID15 INT
DECLARE @OLDLABELID16 INT
DECLARE @OLDLABELID17 INT
DECLARE @OLDLABELID18 INT
DECLARE @OLDLABELID19 INT
DECLARE @OLDLABELID20 INT
DECLARE @OLDLABELID21 INT
DECLARE @OLDLABELID22 INT
DECLARE @OLDLABELID23 INT
DECLARE @OLDLABELID24 INT
DECLARE @OLDLABELID25 INT
DECLARE @OLDLABELID26 INT
DECLARE @OLDLABELID27 INT
DECLARE @OLDLABELID28 INT
DECLARE @OLDLABELID29 INT
DECLARE @OLDLABELID30 INT

DECLARE @OLDLABELNAME VARCHAR(20)
DECLARE @OLDLABELNAME1 VARCHAR(20)
DECLARE @OLDLABELNAME2 VARCHAR(20)
DECLARE @OLDLABELNAME3 VARCHAR(20)
DECLARE @OLDLABELNAME4 VARCHAR(20)
DECLARE @OLDLABELNAME5 VARCHAR(20)
DECLARE @OLDLABELNAME6 VARCHAR(20)
DECLARE @OLDLABELNAME7 VARCHAR(20)
DECLARE @OLDLABELNAME8 VARCHAR(20)
DECLARE @OLDLABELNAME9 VARCHAR(20)
DECLARE @OLDLABELNAME10 VARCHAR(20)
DECLARE @OLDLABELNAME11 VARCHAR(20)
DECLARE @OLDLABELNAME12 VARCHAR(20)
DECLARE @OLDLABELNAME13 VARCHAR(20)
DECLARE @OLDLABELNAME14 VARCHAR(20)
DECLARE @OLDLABELNAME15 VARCHAR(20)
DECLARE @OLDLABELNAME16 VARCHAR(20)
DECLARE @OLDLABELNAME17 VARCHAR(20)
DECLARE @OLDLABELNAME18 VARCHAR(20)
DECLARE @OLDLABELNAME19 VARCHAR(20)
DECLARE @OLDLABELNAME20 VARCHAR(20)
DECLARE @OLDLABELNAME21 VARCHAR(20)
DECLARE @OLDLABELNAME22 VARCHAR(20)
DECLARE @OLDLABELNAME23 VARCHAR(20)
DECLARE @OLDLABELNAME24 VARCHAR(20)
DECLARE @OLDLABELNAME25 VARCHAR(20)
DECLARE @OLDLABELNAME26 VARCHAR(20)
DECLARE @OLDLABELNAME27 VARCHAR(20)
DECLARE @OLDLABELNAME28 VARCHAR(20)
DECLARE @OLDLABELNAME29 VARCHAR(20)
DECLARE @OLDLABELNAME30 VARCHAR(20)

DECLARE @V_RET_CODE INT
SET @V_RET_CODE = -7013000
IF ISNULL(@IN_QUANID,'') = ''
RETURN @V_RET_CODE - 1
IF ISNULL(@IN_QUANNAME,'') = ''
RETURN @V_RET_CODE - 2
IF ISNULL(@IN_QUANHOST,'') = ''
RETURN @V_RET_CODE - 3
IF ISNULL(@IN_QUANMEMO,'') = ''
RETURN @V_RET_CODE - 4
IF ISNUMERIC(@IN_ISPUBLIC) = 0
RETURN @V_RET_CODE - 5
IF ISNULL(@IN_LABELNAME1,'') = '' AND ISNULL(@IN_LABELNAME2,'') = '' AND ISNULL(@IN_LABELNAME3,'') = ''
RETURN @V_RET_CODE - 6
--圈不存在
IF NOT EXISTS(SELECT TOP 1 QUANID FROM [dbo].[TQUAN] WHERE QUANID = @IN_QUANID)
RETURN @V_RET_CODE -7

SET @IN_ISPUBLIC = CONVERT(BIT,@IN_ISPUBLIC)

BEGIN TRANSACTION
BEGIN
UPDATE [dbo].[TQUAN] SET QUANNAME = @IN_QUANNAME,
QUANHOST = @IN_QUANHOST,
ISPUBLIC = @IN_ISPUBLIC,
QUANMEMO = @IN_QUANMEMO
WHERE QUANID = @IN_QUANID

--取出所有旧的标签,30个
DECLARE LABEL_CUR SCROLL CURSOR
FOR
SELECT TQUANLABEL.LABELID,TQUANLABEL.LABELNAME
FROM [dbo].[TQUANLABEL] INNER JOIN
[dbo].[TQUANTOLABEL] ON
TQUANLABEL.LABELID = TQUANTOLABEL.LABELID
WHERE (TQUANTOLABEL.QUANID = @IN_QUANID)
FOR READ ONLY
OPEN LABEL_CUR


FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID1,@OLDLABELNAME1
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID2,@OLDLABELNAME2
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID3,@OLDLABELNAME3
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID4,@OLDLABELNAME4
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID5,@OLDLABELNAME5
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID6,@OLDLABELNAME6
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID7,@OLDLABELNAME7
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID8,@OLDLABELNAME8
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID9,@OLDLABELNAME9
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID10,@OLDLABELNAME10
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID11,@OLDLABELNAME11
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID12,@OLDLABELNAME12
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID13,@OLDLABELNAME13
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID14,@OLDLABELNAME14
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID15,@OLDLABELNAME15
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID16,@OLDLABELNAME16
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID17,@OLDLABELNAME17
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID18,@OLDLABELNAME18
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID19,@OLDLABELNAME19
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID20,@OLDLABELNAME20
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID21,@OLDLABELNAME21
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID22,@OLDLABELNAME22
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID23,@OLDLABELNAME23
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID24,@OLDLABELNAME24
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID25,@OLDLABELNAME25
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID26,@OLDLABELNAME26
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID27,@OLDLABELNAME27
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID28,@OLDLABELNAME28
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID29,@OLDLABELNAME29
FETCH NEXT FROM LABEL_CUR INTO @OLDLABELID30,@OLDLABELNAME30

SET @OLDLABELID1 = ISNULL(@OLDLABELID1,-1)
SET @OLDLABELID2 = ISNULL(@OLDLABELID2,-1)
SET @OLDLABELID3 = ISNULL(@OLDLABELID3,-1)
SET @OLDLABELID4 = ISNULL(@OLDLABELID4,-1)
SET @OLDLABELID5 = ISNULL(@OLDLABELID5,-1)
SET @OLDLABELID6 = ISNULL(@OLDLABELID6,-1)
SET @OLDLABELID7 = ISNULL(@OLDLABELID7,-1)
SET @OLDLABELID8 = ISNULL(@OLDLABELID8,-1)
SET @OLDLABELID9 = ISNULL(@OLDLABELID9,-1)
SET @OLDLABELID10 = ISNULL(@OLDLABELID10,-1)
SET @OLDLABELID11 = ISNULL(@OLDLABELID11,-1)
SET @OLDLABELID12 = ISNULL(@OLDLABELID12,-1)
SET @OLDLABELID13 = ISNULL(@OLDLABELID13,-1)
SET @OLDLABELID14 = ISNULL(@OLDLABELID14,-1)
SET @OLDLABELID15 = ISNULL(@OLDLABELID15,-1)
SET @OLDLABELID16 = ISNULL(@OLDLABELID16,-1)
SET @OLDLABELID17 = ISNULL(@OLDLABELID17,-1)
SET @OLDLABELID18 = ISNULL(@OLDLABELID18,-1)
SET @OLDLABELID19 = ISNULL(@OLDLABELID19,-1)
SET @OLDLABELID20 = ISNULL(@OLDLABELID20,-1)
SET @OLDLABELID21 = ISNULL(@OLDLABELID21,-1)
SET @OLDLABELID22 = ISNULL(@OLDLABELID22,-1)
SET @OLDLABELID23 = ISNULL(@OLDLABELID23,-1)
SET @OLDLABELID24 = ISNULL(@OLDLABELID24,-1)
SET @OLDLABELID25 = ISNULL(@OLDLABELID25,-1)
SET @OLDLABELID26 = ISNULL(@OLDLABELID26,-1)
SET @OLDLABELID27 = ISNULL(@OLDLABELID27,-1)
SET @OLDLABELID28 = ISNULL(@OLDLABELID28,-1)
SET @OLDLABELID29 = ISNULL(@OLDLABELID29,-1)
SET @OLDLABELID30 = ISNULL(@OLDLABELID30,-1)

SET @OLDLABELNAME1 = ISNULL(@OLDLABELNAME1,'')
SET @OLDLABELNAME2 = ISNULL(@OLDLABELNAME2,'')
SET @OLDLABELNAME3 = ISNULL(@OLDLABELNAME3,'')
SET @OLDLABELNAME4 = ISNULL(@OLDLABELNAME4,'')
SET @OLDLABELNAME5 = ISNULL(@OLDLABELNAME5,'')
SET @OLDLABELNAME6 = ISNULL(@OLDLABELNAME6,'')
SET @OLDLABELNAME7 = ISNULL(@OLDLABELNAME7,'')
SET @OLDLABELNAME8 = ISNULL(@OLDLABELNAME8,'')
SET @OLDLABELNAME9 = ISNULL(@OLDLABELNAME9,'')
SET @OLDLABELNAME10 = ISNULL(@OLDLABELNAME10,'')
SET @OLDLABELNAME11 = ISNULL(@OLDLABELNAME11,'')
SET @OLDLABELNAME12 = ISNULL(@OLDLABELNAME12,'')
SET @OLDLABELNAME13 = ISNULL(@OLDLABELNAME13,'')
SET @OLDLABELNAME14 = ISNULL(@OLDLABELNAME14,'')
SET @OLDLABELNAME15 = ISNULL(@OLDLABELNAME15,'')
SET @OLDLABELNAME16 = ISNULL(@OLDLABELNAME16,'')
SET @OLDLABELNAME17 = ISNULL(@OLDLABELNAME17,'')
SET @OLDLABELNAME18 = ISNULL(@OLDLABELNAME18,'')
SET @OLDLABELNAME19 = ISNULL(@OLDLABELNAME19,'')
SET @OLDLABELNAME20 = ISNULL(@OLDLABELNAME20,'')
SET @OLDLABELNAME21 = ISNULL(@OLDLABELNAME21,'')
SET @OLDLABELNAME22 = ISNULL(@OLDLABELNAME22,'')
SET @OLDLABELNAME23 = ISNULL(@OLDLABELNAME23,'')
SET @OLDLABELNAME24 = ISNULL(@OLDLABELNAME24,'')
SET @OLDLABELNAME25 = ISNULL(@OLDLABELNAME25,'')
SET @OLDLABELNAME26 = ISNULL(@OLDLABELNAME26,'')
SET @OLDLABELNAME27 = ISNULL(@OLDLABELNAME27,'')
SET @OLDLABELNAME28 = ISNULL(@OLDLABELNAME28,'')
SET @OLDLABELNAME29 = ISNULL(@OLDLABELNAME29,'')
SET @OLDLABELNAME30 = ISNULL(@OLDLABELNAME30,'')

CLOSE LABEL_CUR
DEALLOCATE LABEL_CUR

SET @I = 30
WHILE(@I >0)
BEGIN
--取一个新标签
IF @I = 30
SET @LABELNAME = @IN_LABELNAME1
IF @I = 29
SET @LABELNAME = @IN_LABELNAME2
IF @I = 28
SET @LABELNAME = @IN_LABELNAME3
IF @I = 27
SET @LABELNAME = @IN_LABELNAME4
IF @I = 26
SET @LABELNAME = @IN_LABELNAME5
IF @I = 25
SET @LABELNAME = @IN_LABELNAME6
IF @I = 24
SET @LABELNAME = @IN_LABELNAME7
IF @I = 23
SET @LABELNAME = @IN_LABELNAME8
IF @I = 22
SET @LABELNAME = @IN_LABELNAME9
IF @I = 21
SET @LABELNAME = @IN_LABELNAME10
IF @I = 20
SET @LABELNAME = @IN_LABELNAME11
IF @I = 19
SET @LABELNAME = @IN_LABELNAME12
IF @I = 18
SET @LABELNAME = @IN_LABELNAME13
IF @I = 17
SET @LABELNAME = @IN_LABELNAME14
IF @I = 16
SET @LABELNAME = @IN_LABELNAME15
IF @I = 15
SET @LABELNAME = @IN_LABELNAME16
IF @I = 14
SET @LABELNAME = @IN_LABELNAME17
IF @I = 13
SET @LABELNAME = @IN_LABELNAME18
IF @I = 12
SET @LABELNAME = @IN_LABELNAME19
IF @I = 11
SET @LABELNAME = @IN_LABELNAME20
IF @I = 10
SET @LABELNAME = @IN_LABELNAME21
IF @I = 9
SET @LABELNAME = @IN_LABELNAME22
IF @I = 8
SET @LABELNAME = @IN_LABELNAME23
IF @I = 7
SET @LABELNAME = @IN_LABELNAME24
IF @I = 6
SET @LABELNAME = @IN_LABELNAME25
IF @I = 5
SET @LABELNAME = @IN_LABELNAME26
IF @I = 4
SET @LABELNAME = @IN_LABELNAME27
IF @I = 3
SET @LABELNAME = @IN_LABELNAME28
IF @I = 2
SET @LABELNAME = @IN_LABELNAME29
IF @I = 1
SET @LABELNAME = @IN_LABELNAME30

SET @LABELID = -1
SET @MONTHADDSTIME = GETDATE()

搜索更多相关主题的帖子: 难题 
2007-06-25 17:21
SuperRen
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-6-25
收藏
得分:0 

未完继续.........

--为空进入取下一新标签
IF ISNULL(@LABELNAME,'') = ''
BEGIN
SET @I = @I -1
CONTINUE
END

--判断这个新标签是否在标签表中
SELECT TOP 1 @LABELID = LABELID,@MONTHADDSTIME = MONTHADDSTIME FROM [dbo].

[TQUANLABEL] WHERE LABELNAME = @LABELNAME

--如果没有该标签,加入标签表,并在圈与标签对应表添加记录
IF @LABELID = -1
BEGIN
INSERT INTO [dbo].[TQUANLABEL]
(LABELNAME)
VALUES
(@LABELNAME)
SET @LABELID = @@IDENTITY

INSERT INTO [dbo].[TQUANTOLABEL]
(QUANID,LABELID)
VALUES
(@IN_QUANID,@LABELID)
END
--如果有该标签
ELSE
BEGIN
--如果新标签与原标签不同
IF @LABELNAME != @OLDLABELNAME1 AND @LABELNAME != @OLDLABELNAME2 AND @LABELNAME != @OLDLABELNAME3 AND @LABELNAME != @OLDLABELNAME4 AND @LABELNAME != @OLDLABELNAME5 AND @LABELNAME != @OLDLABELNAME6 AND @LABELNAME != @OLDLABELNAME7 AND @LABELNAME != @OLDLABELNAME8 AND @LABELNAME != @OLDLABELNAME9 AND @LABELNAME != @OLDLABELNAME10 AND @LABELNAME != @OLDLABELNAME11 AND @LABELNAME != @OLDLABELNAME12 AND @LABELNAME != @OLDLABELNAME13 AND @LABELNAME != @OLDLABELNAME14 AND @LABELNAME != @OLDLABELNAME15 AND @LABELNAME != @OLDLABELNAME16 AND @LABELNAME != @OLDLABELNAME17 AND @LABELNAME != @OLDLABELNAME18 AND @LABELNAME != @OLDLABELNAME19 AND @LABELNAME != @OLDLABELNAME20 AND @LABELNAME != @OLDLABELNAME21 AND @LABELNAME != @OLDLABELNAME22 AND @LABELNAME != @OLDLABELNAME23 AND @LABELNAME != @OLDLABELNAME24 AND @LABELNAME != @OLDLABELNAME25 AND @LABELNAME != @OLDLABELNAME26 AND @LABELNAME != @OLDLABELNAME27 AND @LABELNAME != @OLDLABELNAME28 AND @LABELNAME != @OLDLABELNAME29 AND @LABELNAME != @OLDLABELNAME30
BEGIN
INSERT INTO [dbo].[TQUANTOLABEL]
(QUANID,LABELID)
VALUES
(@IN_QUANID,@LABELID)
--标签添加数加1,本月添加数加1或清零置1
IF MONTH(GETDATE()) != MONTH(@MONTHADDSTIME)
UPDATE [dbo].[TQUANLABEL] SET ADDS = ADDS+1,MONTHADDS = 1,MONTHADDSTIME =

GETDATE() WHERE LABELID = @LABELID
ELSE
UPDATE [dbo].[TQUANLABEL] SET ADDS = ADDS+1,MONTHADDS = MONTHADDS+1

WHERE LABELID = @LABELID
END
END
SET @I = @I -1
END

SET @I = 30
--取新标签,如果新标签与原标签不同
WHILE(@I>0)
BEGIN
--取一个原来的标签
IF @I = 30
BEGIN
SET @OLDLABELID = @OLDLABELID1
SET @OLDLABELNAME = @OLDLABELNAME1
END
IF @I = 29
BEGIN
SET @OLDLABELID = @OLDLABELID2
SET @OLDLABELNAME = @OLDLABELNAME2
END
IF @I = 28
BEGIN
SET @OLDLABELID = @OLDLABELID3
SET @OLDLABELNAME = @OLDLABELNAME3
END
IF @I = 27
BEGIN
SET @OLDLABELID = @OLDLABELID4
SET @OLDLABELNAME = @OLDLABELNAME4
END
IF @I = 26
BEGIN
SET @OLDLABELID = @OLDLABELID5
SET @OLDLABELNAME = @OLDLABELNAME5
END
IF @I = 25
BEGIN
SET @OLDLABELID = @OLDLABELID6
SET @OLDLABELNAME = @OLDLABELNAME6
END
IF @I = 24
BEGIN
SET @OLDLABELID = @OLDLABELID7
SET @OLDLABELNAME = @OLDLABELNAME7
END
IF @I = 23
BEGIN
SET @OLDLABELID = @OLDLABELID8
SET @OLDLABELNAME = @OLDLABELNAME8
END
IF @I = 22
BEGIN
SET @OLDLABELID = @OLDLABELID9
SET @OLDLABELNAME = @OLDLABELNAME9
END
IF @I = 21
BEGIN
SET @OLDLABELID = @OLDLABELID10
SET @OLDLABELNAME = @OLDLABELNAME10
END
IF @I = 20
BEGIN
SET @OLDLABELID = @OLDLABELID11
SET @OLDLABELNAME = @OLDLABELNAME11
END
IF @I = 19
BEGIN
SET @OLDLABELID = @OLDLABELID12
SET @OLDLABELNAME = @OLDLABELNAME12
END
IF @I = 18
BEGIN
SET @OLDLABELID = @OLDLABELID13
SET @OLDLABELNAME = @OLDLABELNAME13
END
IF @I = 17
BEGIN
SET @OLDLABELID = @OLDLABELID14
SET @OLDLABELNAME = @OLDLABELNAME14
END
IF @I = 16
BEGIN
SET @OLDLABELID = @OLDLABELID15
SET @OLDLABELNAME = @OLDLABELNAME15
END
IF @I = 15
BEGIN
SET @OLDLABELID = @OLDLABELID16
SET @OLDLABELNAME = @OLDLABELNAME16
END
IF @I = 14
BEGIN
SET @OLDLABELID = @OLDLABELID17
SET @OLDLABELNAME = @OLDLABELNAME17
END
IF @I = 13
BEGIN
SET @OLDLABELID = @OLDLABELID18
SET @OLDLABELNAME = @OLDLABELNAME18
END
IF @I = 12
BEGIN
SET @OLDLABELID = @OLDLABELID19
SET @OLDLABELNAME = @OLDLABELNAME19
END
IF @I = 11
BEGIN
SET @OLDLABELID = @OLDLABELID20
SET @OLDLABELNAME = @OLDLABELNAME20
END
IF @I = 10
BEGIN
SET @OLDLABELID = @OLDLABELID21
SET @OLDLABELNAME = @OLDLABELNAME21
END
IF @I = 9
BEGIN
SET @OLDLABELID = @OLDLABELID22
SET @OLDLABELNAME = @OLDLABELNAME22
END
IF @I = 8
BEGIN
SET @OLDLABELID = @OLDLABELID23
SET @OLDLABELNAME = @OLDLABELNAME23
END
IF @I = 7
BEGIN
SET @OLDLABELID = @OLDLABELID24
SET @OLDLABELNAME = @OLDLABELNAME24
END
IF @I = 6
BEGIN
SET @OLDLABELID = @OLDLABELID25
SET @OLDLABELNAME = @OLDLABELNAME25
END
IF @I = 5
BEGIN
SET @OLDLABELID = @OLDLABELID26
SET @OLDLABELNAME = @OLDLABELNAME26
END
IF @I = 4
BEGIN
SET @OLDLABELID = @OLDLABELID27
SET @OLDLABELNAME = @OLDLABELNAME27
END
IF @I = 3
BEGIN
SET @OLDLABELID = @OLDLABELID28
SET @OLDLABELNAME = @OLDLABELNAME28
END
IF @I = 2
BEGIN
SET @OLDLABELID = @OLDLABELID29
SET @OLDLABELNAME = @OLDLABELNAME29
END
IF @I = 1
BEGIN
SET @OLDLABELID = @OLDLABELID30
SET @OLDLABELNAME = @OLDLABELNAME30
END

IF ISNULL(@OLDLABELNAME,'') = ''
BREAK

IF @OLDLABELNAME != @IN_LABELNAME1 AND @OLDLABELNAME != @IN_LABELNAME2 AND

@OLDLABELNAME != @IN_LABELNAME3 AND
@OLDLABELNAME != @IN_LABELNAME4 AND
@OLDLABELNAME != @IN_LABELNAME5 AND
@OLDLABELNAME != @IN_LABELNAME6 AND
@OLDLABELNAME != @IN_LABELNAME7 AND
@OLDLABELNAME != @IN_LABELNAME8 AND
@OLDLABELNAME != @IN_LABELNAME9 AND
@OLDLABELNAME != @IN_LABELNAME10 AND
@OLDLABELNAME != @IN_LABELNAME11 AND
@OLDLABELNAME != @IN_LABELNAME12 AND
@OLDLABELNAME != @IN_LABELNAME13 AND
@OLDLABELNAME != @IN_LABELNAME14 AND
@OLDLABELNAME != @IN_LABELNAME15 AND
@OLDLABELNAME != @IN_LABELNAME16 AND
@OLDLABELNAME != @IN_LABELNAME17 AND
@OLDLABELNAME != @IN_LABELNAME18 AND
@OLDLABELNAME != @IN_LABELNAME19 AND
@OLDLABELNAME != @IN_LABELNAME20 AND
@OLDLABELNAME != @IN_LABELNAME21 AND
@OLDLABELNAME != @IN_LABELNAME22 AND
@OLDLABELNAME != @IN_LABELNAME23 AND
@OLDLABELNAME != @IN_LABELNAME24 AND
@OLDLABELNAME != @IN_LABELNAME25 AND
@OLDLABELNAME != @IN_LABELNAME26 AND
@OLDLABELNAME != @IN_LABELNAME27 AND
@OLDLABELNAME != @IN_LABELNAME28 AND
@OLDLABELNAME != @IN_LABELNAME29 AND
@OLDLABELNAME != @IN_LABELNAME30
BEGIN
--在圈与标签对应表中删除不使用的标签
DELETE FROM [dbo].[TQUANTOLABEL] WHERE LABELID = @OLDLABELID AND QUANID =

@IN_QUANID
--标签添加数减1
UPDATE [dbo].[TQUANLABEL] SET ADDS = ADDS - 1 ,MONTHADDS = MONTHADDS -1 WHERE

LABELID = @OLDLABELID
END
SET @I = @I -1
END
END
IF @@ERROR != 0
BEGIN
ROLLBACK TRANSACTION
RETURN -100
END
COMMIT TRANSACTION
RETURN 100
GO

2007-06-25 17:23
SuperRen
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-6-25
收藏
得分:0 
代码其实并不长的, 只是要多选的标签有30个, 而且数据库的操作语句可能写得不科学, 所以才这么冗长...
2007-06-25 17:25
SuperRen
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-6-25
收藏
得分:0 
本人水平有限, 但项目经理又需要我继续用存储过程, 说是从高从严要求自己才能有进步..哎..头痛啊.
2007-06-25 17:29
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
收藏
得分:0 

就这样的存储过程再怎么改也很难提高水平。。。
LZ,建议你重写 用穷举方式写代码 那数据库的表是用来干嘛的呢?

从你的代码中没看出来为什么不能记录不连续的选项,能把原因说得清楚一点么


2007-06-26 09:59
快速回复:求教关于单选改成多选的存储过程的难题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017848 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved