DB/MySQL

MSSQL PROC ARRAY

적외선 2012. 12. 11. 18:01

MSSQL 에서는 배열을 처리할 수 없습니다.
따라서 다음과 같은 방식으로 우회하여 처리하는 방법이 있습니다.
client 에서 comma 로 구분된 자료를 Stored Procedure 로 보내면
이 SP 에서는 콤마로 구분된 자료들을 하나씩 분리하여 원하는
기능에 넣어 사용하게 되는 방법입니다.  참조되시길...


CREATE PROCEDURE pro_array @DATA VARCHAR(1000)
AS
BEGIN

  /*

   - 최대 1000 자리수의 값을 받습니다. 이 길이는 조정 가능
   - 콤마로 구분된 PK항목값 들을 UPDATE 구분에서 활용하는 예제입니다.
  */

WHILE CHARINDEX(',',@DATA)<>0
  BEGIN
        
    UPDATE 테이블명 SET 항목명 = '선택' WHERE PK항목명 = SUBSTRING(@DATA,1,CHARINDEX(',',@DATA)-1)

        SET @DATA=SUBSTRING(@DATA,CHARINDEX(',',@DATA)+1,LEN(@DATA))                

        IF CHARINDEX(',',@DATA)=0
           BEGIN
                   UPDATE 테이블명 SET 항목명 = '선택' WHERE PK항목명 = SUBSTRING(@DATA,1,LEN(@DATA))
           END
  
  END
  
END


--> 사용법 :  EXEC pro_array  '1001,1004,1102,1999,9999'


출처 - http://blog.naver.com/PostView.nhn?blogId=idtong&logNo=130071540216&redirect=Dlog&widgetTypeCall=true