문제

일부 쿼리를 동적으로 생성 해야하는 PL/SQL 프로 시저를 작성하고 있으며, 그 중 하나는 매개 변수로 취한 쿼리의 결과를 사용하여 임시 테이블을 작성하는 것입니다.

CREATE OR REPLACE PROCEDURE sqlout(query IN VARCHAR2)
IS
BEGIN
EXECUTE IMMEDIATE  'CREATE GLOBAL TEMPORARY TABLE tmp_tab AS (' || query || ');';
END;

올바르게 컴파일하지만 다음과 같은 매우 간단한 쿼리로도

BEGIN
    sqlout('SELECT * FROM DUAL');
END;

그것은 던졌습니다 ORA-00911: invalid character. 생성 된 쿼리를 수동으로 실행하면 올바르게 실행됩니다. 이 시점에서 나는 문제를 일으키는 원인을 결정할 수 있습니다.

도움이 되었습니까?

해결책

";" 즉시 실행하는 문자열 내부에서.

EXECUTE IMMEDIATE  'CREATE GLOBAL TEMPORARY TABLE tmp_tab AS (' || query || ')';
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top