Это моя первая попытка создания пакета, поэтому я должен упустить что-то действительно действительно очевидное (ничего, что я искал в Google, похоже, даже считает, что стоит упомянуть).Как выполнить частные процедуры в пакете Oracle?
Очевидно, что если у вас есть процедуры в корпусе вашего пакета, которые не включены в раздел спецификации, эти процедуры являются частными. Проблема у меня в том, что я не могу понять, как ссылки эти частные пакеты, как только я их создал. И SQL Developer отказывается дать мне какое-либо сообщение, более полезное, чем «выполнение, выполненное с предупреждением», что не помогает ...
В качестве примера, это то, что я пытался, что не работает (просто бросает вышеупомянутую ошибку компилятора):
CREATE OR REPLACE PACKAGE BODY testPackage AS
PROCEDURE privateProc; --Forward declaration
PROCEDURE publicProc IS
BEGIN
EXECUTE privateProc();
END;
PROCEDURE privateProc IS
BEGIN
DBMS_OUTPUT.PUT_LINE('test');
END;
END testPackage;
Я также попытался называя его testPackage.privateProc
, который не работал ни.
Что я делаю неправильно?
Это было полезно. Я правильно звонил, но я не знал, что мне нужна «форвардная декларация». –
@ end-user - объявление вперед необходимо только в том случае, если мы не объявляем частные процедуры до их вызова. Лично мне легче объявлять процедуры в правильном порядке, а не давать дополнительную подпись для поддержки. – APC
Еще одно преимущество заключается в том, что вы получаете предложение кода для параметров, если вы заранее реализуете процедуру, а не просто объявляете ее. По крайней мере, это поведение в жабе. – ch1ll