Я пытаюсь запустить хранимую процедуру с несколькими параметрами ввода и вывода. Процедуру можно просмотреть только на панели «Подключения», перейдя в раздел «Другие пользователи | | Пакеты | |Запустить хранимую процедуру в SQL Developer?
Если я нажимаю правой кнопкой мыши, пункты меню «Сортировать членов по ...» и «Создать модульный тест» (выделены серым цветом). Возможность «запускать» процедуру не представляется возможной, когда пользователь получает доступ к ней.
Я пытался найти пример того, как создать анонимный блок, чтобы я мог запускать процедуру как файл SQL, но не нашел ничего, что работает.
Кто-нибудь знает, как я могу выполнить эту процедуру от SQL Developer? Я использую версию 2.1.1.64.
Заранее благодарен!
EDIT 1:
Процедура, которую я хочу назвать имеет эту подпись:
user.package.procedure(
p_1 IN NUMBER,
p_2 IN NUMBER,
p_3 OUT VARCHAR2,
p_4 OUT VARCHAR2,
p_5 OUT VARCHAR2,
p_6 OUT NUMBER)
Если я пишу мой анонимный блок, как это:
DECLARE
out1 VARCHAR2(100);
out2 VARCHAR2(100);
out3 VARCHAR2(100);
out4 NUMBER(100);
BEGIN
EXECUTE user.package.procedure (33,89, :out1, :out2, :out3, :out4);
END;
я получаю ошибку :
Bind Varialbe "out1" is NOT DECLCARED
anonymous block completed
Я попытался инициализацией аут * переменные:
out1 VARCHAR2(100) := '';
но получить ту же ошибку:
EDIT 2:
На основании ответа Алекс, я попытался удалить двоеточия из перед параметрами и получить это:
Error starting at line 1 in command:
DECLARE
out1 VARCHAR2(100);
out2 VARCHAR2(100);
out3 VARCHAR2(100);
out4 NUMBER(100);
BEGIN
EXECUTE user.package.procedure (33,89, out1, out2, out3, out4);
END;
Error report:
ORA-06550: line 13, column 17:
PLS-00103: Encountered the symbol "USER" when expecting one of the following:
:= . (@ % ; immediate
The symbol ":=" was substituted for "USER" to continue.
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
Возможный дубликат [Лучший способ/инструмент для получения результатов от процедуры пакета oracle] (http://stackoverflow.com/questions/3526798/best-way-tool-to-get-the-results-from- a-oracle-package-procedure) –
Попробуйте помещать переменные OUT внутри BEGIN перед выполнением процедуры. –
Вам не нужен 'execute'; в PL/SQL, который интерпретируется как начало 'execute немедленный', который отличается от SQL' execute'. –