테이블이있는 경우에만 IF 절에서 일부 명령문을 실행해야합니다. 그러나 내가 직면 한 문제는 조건이 거짓 일 때도 명령문이 실행되고 있다는 것입니다.IF 절 내에서 select/insert 문을 실행하십시오. Oracle
DECLARE
count_matching_row NUMBER := 0;
count_matching_tbl NUMBER := 0;
BEGIN
SELECT COUNT(*)
INTO count_matching_tbl
FROM user_tables
WHERE LOWER(table_name) = 'tab1';
IF(count_matching_tbl = 1)
THEN
SELECT COUNT (*)
INTO count_matching_row
FROM test1
WHERE ID IN (SELECT ID FROM tab1);
IF(count_matching_row = 0)
THEN
INSERT INTO review_case
SELECT
DISTINCT ID, d,e
FROM tab1
WHERE ID IS NOT NULL;
INSERT INTO review_case_payer
SELECT
a,b,c
FROM tab1
WHERE a IS NOT NULL;
COMMIT;
END IF;
END IF;
END;
/
이러한 명령문을 실행할 때마다 'tab1'테이블이 존재하면 정상적으로 작동합니다. 테이블 TAB1이 존재하지 않는 경우 나는 오류를 얻을
"ORA-06550 : 줄 13, 열 14 : PL/SQL은 : ORA-00942 : 테이블 또는 뷰가 존재하지 않습니다" 내가 각각 유사한 오류가 발생할 수 테이블 "tab1"에 액세스하려고 시도하는 줄
참조 커서로 시도했지만 여전히 동일합니다. 삽입 문에 사용할 수 없습니다.
, 다음 코드 원 전혀 컴파일하지 않습니다. 오라클은 테이블이 존재하지 않는다고 불평 할 것입니다. 정적 SQL 대신 동적 SQL을 사용해야합니다. – krokodilko
PL/SQL은 컴파일 된 언어입니다. 모든 것이 유효한 참조로 성공적으로 컴파일되어야합니다. 그렇지 않으면 전혀 실행되지 않습니다 (예 : Java 또는 Perl). 스크립트 언어가 아니며 한 줄씩 혼란 스럽습니다. –