MS-SQL 배열을 이용한 프로시저
*
배열자체를 넘기는 방법은 없는 걸로 압니다.
생각할 수 있는 방법은 배열의 값을 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
[출처] 배열을 이용한 프로시져 (플그램밍) |작성자 분노의칼