SqlServer中游标的使用

使用了一个游标,并分解一个字符串:

DECLARE @flag NVARCHAR(50),@i INT
DECLARE @r1 NVARCHAR(50),@r2 NVARCHAR(50),@assay NVARCHAR(50)
SET @flag='20100427181006'
SET @assay=''

--使用游标
DECLARE getAssayValue CURSOR FOR
    SELECT ASSAY FROM dbo.KH_SampleBarcode1  WHERE POSITIONBC NOT IN (SELECT BCNAME FROM dbo.KH_BarCode) AND FLAG=@flag
OPEN getAssayValue
FETCH NEXT FROM getAssayValue INTO @r1
WHILE @@FETCH_STATUS<>-1
BEGIN
    IF @assay=''
        SET @assay=@r1
    ELSE
    BEGIN
        --以下对字符串做的分解,相当于一个Split方法
        SET @i=CHARINDEX(';',@r1)
        IF @i>0
        BEGIN
            WHILE @i>0
            BEGIN
                SET @r2=LEFT(@r1, @i-1)
                IF CHARINDEX(@r2, @assay)<=0
                    SET @assay=@assay+';'+@r2
                SET @r1=SUBSTRING(@r1, @i+1, LEN(@r1)-@i)
                SET @i=CHARINDEX(';',@r1)
            END
        END
        ELSE
            IF CHARINDEX(@r1, @assay)<=0
                SET @assay=@assay+';'+@r1
    END
    FETCH NEXT FROM getAssayValue INTO @r1
END

CLOSE getAssayValue
DEALLOCATE getAssayValue
PRINT @assay

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值