zoukankan      html  css  js  c++  java
  • SQL While And Sql Array

    SQL While循环:

    DECLARE @whileStr varchar(200),@itemArray VARCHAR(200),@mark CHAR(1)
    SET @whileStr='1,12,1003,100|2,13,1004,101|3,14,1005,102'
    --SET @whileStr='4,11,1000,100|'
    SET @mark=','
    WHILE(1=1)
    BEGIN
        --获取当前需要项
        exec proc_getArrayItem '|',@whileStr OUTPUT,@itemArray OUTPUT
    
        --业务逻辑 proc_getArrayItem接收的参数是字符串类型,但是我们可以把变量定义成需要的类型,它会自动转换
        declare @ItemID INT,@D3_BuyCount INT,@D3_TotalStock INT,@D3_DailyStock INT
        exec proc_getArrayItem @mark,@itemArray OUTPUT,@ItemID OUTPUT/*获取第1项*/           
        exec proc_getArrayItem @mark,@itemArray OUTPUT,@D3_BuyCount OUTPUT/*获取第2项*/          
        exec proc_getArrayItem @mark,@itemArray OUTPUT,@D3_TotalStock OUTPUT/*获取第3项*/           
        exec proc_getArrayItem @mark,@itemArray OUTPUT,@D3_DailyStock OUTPUT/*获取第4项*/          
        SELECT @ItemID,@D3_BuyCount,@D3_TotalStock,@D3_DailyStock
        
        --如果已完则退出循环
        IF(LEN(@whileStr)=0)BREAK    
    END

    获取数组元素:

    if exists(select * from sysobjects where [name]='proc_getArrayItem')
        drop proc proc_getArrayItem
    GO
    /* 
    *获取数组项,通过输出参数返回。同时将字符串数组的已获取项删除,并以输出参数将新数组返回。 
    @arrayStr是个以@mark符号分隔的字符串数组。 
    *@arrayItem接收的参数是字符串类型,但是我们可以把客户端变量定义成需要的类型,它会自动转换。 
    *
    */
    CREATE PROC proc_getArrayItem
    (
        @mark    VARCHAR(10)=',',
        @arrayStr VARCHAR(1000)='' OUTPUT,
        @arrayItem VARCHAR(100)='' OUTPUT
    )
    AS
        DECLARE @tokenIndex INT
        SET @tokenIndex=CHARINDEX(@mark,@arrayStr)  
        
        IF(@tokenIndex=0)
        BEGIN
            SET @arrayItem=SUBSTRING(@arrayStr,1,LEN(@arrayStr))        
            SET @arrayStr=''
        END
        ELSE
        BEGIN
            SET @arrayItem=SUBSTRING(@arrayStr,1,@tokenIndex-1)
            SET @arrayStr=SUBSTRING(@arrayStr,@tokenIndex+1,LEN(@arrayStr))
        END
    GO
  • 相关阅读:
    iosopendev配置
    按Home键切换到后台后会触发libGPUSupportMercury.dylib: gpus_ReturnNotPermittedKillClient导致crash
    iphone图片简单处理
    iPhone开发小工具
    iphone开发设置默认字体
    NSString+TimeCategory
    UIButton zoomin pressed
    Centos7下卸载docker
    如何清理Docker占用的磁盘空间
    美国VPS推荐1GB 50GB可以win
  • 原文地址:https://www.cnblogs.com/ToughGuy/p/3727008.html
Copyright © 2011-2022 走看看