안녕하세요..
SQL에 대해 잘 모르는 신입 개발자 인사드립니다.
이런 와중에 oracle 에서 postgreSQL로 마이그레이션 하던 중 오류를 만나게 되어 전문가분들의 도움을 받고자 합니다.
아! postgreSQL 버전은 14 버전 입니다!
oracle)
CREATE OR REPLACE PROCEDURE trusrm.pass_ref_cur (p_cursor REFCURSOR) AS $body$
DECLARE
array_t IS TABLE OF varchar(4000)
INDEX BY integer;
rec_array array_t;
BEGIN
FETCH p_cursor BULK COLLECT INTO rec_array;
FOR i IN rec_array.FIRST .. rec_array.LAST
LOOP
RAISE NOTICE '%', rec_array(i);
END LOOP;
END;
$body$
LANGUAGE PLPGSQL
SECURITY DEFINER
;
을 돌리게 되었습니다.
구문 오류, "IS" 부근
LINE 5: TYPE array_t IS TABLE OF varchar(4000)
^
CONTEXT: "array_t IS TABLE OF varchar(4000)
INDEX BY integer" 자료형 이름은 유효하지 않은 자료형입니다.
그래서 해당되는
--array_t IS TABLE OF varchar(4000)
--INDEX BY integer;
--rec_array array_t;
주석 처리 후
rec_array CHARACTER VARYING(4000)[];
으로 수정해 보았습니다.
그리고 나서는
[42601] 오류: 구문 오류, "BULK" 부근
으로 나오더군요....
하지만.. 제가 BULK에 대해서도 잘 몰라 수정을 못하고 있습니다..
실은 그 밖에도 first 와 last
loop문 안에 rec_array 에서도 붉은 색으로 오류를 표현하고 있습니다.
도움이 필요합니다...
|