DB2에서 store procedure(이하 sp)를 구성하는데
제가 원하는 동적 구성은 select 하게 될 컬럼과 where 절의 조건,
이 두가지가 모두
동적으로 들어갑니다.
select a,b 가 될수도 있고 select a,b,c,d가 될 수도 있는
것이죠.
아래의 예제는 필드가 동적으로 되는데, where절의 조건부를 in
파라메터로 처리했는데
where절 부분이 인식이 안됩니다.
CREATE PROCEDURE ACS_GETREGINFO3(
IN inparam VARCHAR(19),
IN inparam2 VARCHAR(16),
OUT result VARCHAR(19)
)
SPECIFIC ACS_GETREGINFO3
DYNAMIC RESULT SETS 1
NOT DETERMINISTIC
LANGUAGE SQL
BEGIN
DECLARE stmt VARCHAR(1000) DEFAULT '';
DECLARE result2 VARCHAR(1000) DEFAULT '';
DECLARE c1 CURSOR WITH RETURN TO CLIENT FOR s1;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
SET result2 = 'PROCEDURE_FAILED';
SET result = inparam2; -- 혹시나 해서
-- 여기가 문제입니다. inparam은 "a,b,c" "a,b,c,d"를 맘대로
뽑아올 수 있는데
-- where의 card_no 이후의 inparam2에 대해서 인식이
안되는지
-- 결과 셋을 받아오지 못합니다. 항상 null이네요.
SET stmt = 'SELECT ' || inparam || ' ' || 'FROM TBV3DACHD
WHERE ' ||
'card_no =' || inparam2;
-- 혹시나 해서 out 파라메터를 따로 둬보고 해당 값을
string으로 받아서
-- java app.단에서 출력해봤는데, 값은 맞게
나왔었구요....
PREPARE s1 FROM stmt;
EXECUTE s1;
OPEN c1;
END@
-- 고수 여러분들의 깊고 넓으신 한 수 가르침 부탁드립니다
(_._)
|