ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MS-SQL 배열을 이용한 프로시저
    프로그램/Mssql 2024. 1. 23. 11:44
    336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

    *
    배열자체를 넘기는 방법은 없는 걸로 압니다.
    생각할 수 있는 방법은 배열의 값을  string으로 구분자를 넣어서 넘긴후
    procedure내에서 구분자 만큼 끊어서 Loop를 돌리는 방법이 있겠네요.
    예를 들자면

    Dim own_numb
    for a=0 to cnt
      own_numb =own_numb & Request.Form("own_numb" & a) & ","
    next
    own_numb=Left(own_numb,len(own_numb)-1)

    own_numb에는 value1,value2,value3, ....  으로 값을 가지게 되고

    sp 내에서 그 값을  , 단위로 끊어 냅니다.
    */

    BEGIN

    DECLARE @str VARCHAR(600)
    DECLARE @idx INT
    DECLARE @fetchstr VARCHAR(200)
    SELECT @str=@배열값 --프로지져로 넘어온 배열 값을 @str로 넣어줌(이해를 돕기위해)
    SELECT @idx=CHARINDEX(',',@str)  -- @str내 , 문자 위치 찾아냄. 없으면 0 리턴.

    IF @idx>0 -- 배열로 존재
    BEGIN 
    WHILE @idx>0
    BEGIN
    SELECT @idx=CHARINDEX(',',@str)
    SELECT @fetchstr=SUBSTRING(@str,1,@idx-1) -- ,앞부분
    만 잘라냄
    SELECT @str=LTRIM(SUBSTRING(@str,@idx+1,len(@str)-len
    (@fetchstr))) -- 잘라낸 뒤부분만 다시 @str에 저장

    @fetchstr처리 -- 원하는 작업 수행

    SELECT @idx=CHARINDEX(',',@str) -- 조건식@idx
    다시 구함.(@str이 짧아 졌음)
    END
    @str에대한 처리 --WHILE LOOP를 돌고나면 @str에 마지막 배열값만 남음.

    END
    ELSE --배열이 아닌 단일값으로 존재하거나 공백
    BEGIN
    @str 처리 -- 원하는 작업 수행
    END

    END

    [출처] 배열을 이용한 프로시져 (플그램밍) |작성자 분노의칼

    '프로그램 > Mssql' 카테고리의 다른 글

    MS-SQL 주민번호 체크 쿼리  (0) 2024.01.23
    MS-SQL 프로시져 내용 검색  (0) 2024.01.23
    MS-SQL sp_lock  (0) 2024.01.23
    MSSQL 로그 백업 및 삭제  (0) 2024.01.23
    MSSQL 함수 모음  (0) 2024.01.23
Designed by Tistory.