У меня проблемы с выполнением хранимой процедуры в Oracle.
Ниже представлена хранимая процедура:
CREATE OR REPLACE Procedure xxxlist
(yyyid in NUMBER)
IS
xid number(6);
cursor c1 is select distinct xxxID from MXS.Y where YID=yyyid;
BEGIN
IF NOT c1%ISOPEN THEN
OPEN c1;
END IF;
LOOP
FETCH c1 into xid;
dbms_output.put_line(TO_CHAR(xid));
EXIT WHEN c1%NOTFOUND;
END LOOP;
CLOSE c1;
END;
Когда я создаю хранимую процедуру, я получаю следующую ошибку:
Warning: Procedure created with compilation errors.
Я выполняю приведенную ниже команду, чтобы предоставить мне более подробную информацию о приведенном выше абстрактном сообщении об ошибке.
SHO ERR;
Я получаю следующие данные в ответ на указанную выше команду:
Errors for PROCEDURE XXXLIST:
LINE/COL ERROR
-------- -----------------------------------------------------------------
5/18 PL/SQL: SQL Statement ignored
5/52 PL/SQL: ORA-00942: table or view does not exist
Теперь я понимаю, что существует проблема с именем таблицы или самим запросом sql. Поэтому я пытаюсь выполнить SQL-запрос самостоятельно, отдельно от PRODECURE, чтобы увидеть, что происходит с таблицей или запросом.
select distinct xxxID from MXS.Y where YID=yyyid;
Но я не нахожу проблем с вышеуказанным запросом. Запрос работает нормально, и я получаю правильный результат.
Итак, я не знаю, почему при выполнении процедуры возникают проблемы. Кто-нибудь может помочь?