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
  • 相关阅读:
    XML(学习笔记)
    css样式学习笔记
    Request(对象)
    sql一些错误修改的总结
    转载(如何学习C#)
    sql server(学习笔记2 W3Cschool)
    sql sqrver(学习笔记1 W3Cschool)
    关于 flutter开发碰到的各种问题,有的已经解决有的一直没解决或者用其他方法替代
    关于 Flutter IOS build It appears that your application still contains the default signing identifier.
    关于 flutter本地化问题 The getter 'pasteButtonLabel' was called on null
  • 原文地址:https://www.cnblogs.com/ToughGuy/p/3727008.html
Copyright © 2011-2022 走看看