이 쿼리를 실행하여 즉시 실행하는 이유는 왜 실패합니까?
-
23-08-2019 - |
문제
일부 쿼리를 동적으로 생성 해야하는 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 || ')';
제휴하지 않습니다 StackOverflow