데이터 마이 그 레이션 중 일부 테이블 이름을 확인하도록 요청했지만 DBA 권한이 없으며 다른 사용자의 테이블이기 때문에 USER_TABLE보기가 유용하지 않습니다. 그래서 내 생각은 (내가 오라클 SQL 개발자를 사용하고 있습니다)이 같은 AA 쿼리를 만드는 것입니다 :다른 사용자의 테이블 이름 확인
CREATE GLOBAL TEMPORARY TABLE table_exist (NAME VARCHAR(50), EXIST VARCHAR(15))
ON COMMIT DELETE ROWS
/
DECLARE
v_exist number;
BEGIN
SELECT (1) INTO v_exist FROM SCHEMA.TABLE WHERE ROWNUM =1;
INSERT INTO table_exist (NAME, EXIST)
VALUES ('TABLE','EXIST');
EXCEPTION
WHEN OTHERS THEN
INSERT INTO table_exist (NAME, EXIST)
VALUES ('TABLE','NOT_EXIST');
END;
/
SELECT * FROM table_exist;
/
DROP TABLE table_exist;
문제는 테이블이 SQL 여기에 예외 블록을 무시 존재하지 않을 때하는 것은 내가 오류가 있다는 것입니다 :
Informe de error -
ORA-06550: línea 5, columna 55:
PL/SQL: ORA-00942: la tabla o vista no existe
ORA-06550: línea 5, columna 3:
PL/SQL: SQL Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
no se ha seleccionado ninguna fila
Table TABLE_EXIST borrado.
이 오류가 발생하는 이유와 sql이 예외 블록을 읽지 않는 이유를 말해 줄 수 있습니까? (나는 SQL 오라클에서 너무 많은 경험이 없다).
탁신, 당신이 나를 도울 수 있기를 바랍니다.
컴파일 오류이므로 예외에 의해 catch되지 않습니다. 이 방법을 시도하려면 동적 SQL이 필요합니다. '즉시 실행 '을 찾으십시오 – vercelli
잊어 버리십시오. 테이블이 존재하지 않거나 액세스 할 수 없다는 것을 알지 못하기 때문에이 접근법은 어쨌든 작동하지 않습니다. 만약 당신이 사용자와 접근 할 수 있다면'select owner, table_name from all_tables where owner = 'theOtherSchema'; ' – vercelli
vercelli, 많이 작동합니다. – Abianco