Тестирование функции в PL/SQL Developer

Это моя функция:

FUNCTION GET(V_IN IN NUMBER) RETURN VARCHAR2 AS
    V_OUT VARCHAR2(1000);
BEGIN
    function body
END;

Когда я щелкаю правой кнопкой мыши по функции и нажимаю на тест, я получаю следующее:

begin
  -- Call the function
  :result := pkg.get(V_IN => :V_IN);
end;

Как подставить значение этой переменной V_IN? Мне нужно проверить его на число, скажем, 940.

Когда я пробую код:

declare
  r varchar2(2000);
begin
  -- Call the function
  r := pkg.get(940);
end;

Я получаю сообщение об ошибке:

ORA-01036: illegal variable name/number

Можете ли вы предложить различные способы вызова этой функции?

PS: Используемый инструмент: PL/SQL Developer Allround Automations. Версия 8.0.1.1502

База данных Oracle 11g Корпоративная версия


person Natty    schedule 09.05.2017    source источник
comment
Какой инструмент вы используете: PL/SQL Developer от Allround Automations или SQL Developer от Oracle?   -  person Bob Jarvis - Reinstate Monica    schedule 09.05.2017
comment
Разработчик PL/SQL от Allround Automations.   -  person Natty    schedule 09.05.2017


Ответы (4)


После того, как вы нажали на свою функцию и нажали Test в контекстном меню, появится тестовое окно с кодом, который вы показали. В этом окне есть две панели: верхняя панель показывает код, сгенерированный PL/SQL Developer для вызова функции, а нижняя панель содержит список параметров вашей функции. В нижней части окна Тест находится список параметров функции с тремя столбцами — Переменная, Тип и Значение. Введите нужное значение в столбец «Значение» в строке с именем параметра, затем нажмите кнопку «Запустить отладчик» (вверху слева от окна «Тест», под именем вкладки «Тестовый сценарий»), затем нажмите кнопку «Выполнить» (сразу справа от кнопки «Запустить отладчик»).

Удачи.

person Bob Jarvis - Reinstate Monica    schedule 09.05.2017
comment
Это именно то, что я ожидал от обуви новичка. Большое спасибо, но я понял это сам с некоторыми самостоятельными исследованиями. - person Natty; 09.05.2017

"Как мне подставить значение этой переменной V_IN? Я "

Когда вы запускаете тест в PLSQL Developer, нижняя панель тестового окна представляет собой список свойств для всех переменных подстановки. Вы определяете тип данных и входные значения (при необходимости). Выходные значения доступны в этом окне после запуска теста.

«ORA-01036: недопустимое имя/номер переменной»

Не уверен, что вызывает это. Вероятно, это не разработчик PLSQL, а ошибка в коде вашей функции (которую вы не опубликовали).

person APC    schedule 09.05.2017
comment
Я не понимаю тебя. - person Natty; 09.05.2017
comment
Чего ты не понимаешь? - person APC; 09.05.2017
comment
Теперь я могу понять, что вы пытались сказать. Я новичок в этом инструменте, и мне потребовалось некоторое время, чтобы понять его. СПАСИБО! - person Natty; 09.05.2017
comment
Возможно, PL/SQL Dev версии 8 не может обрабатывать случай, когда переменная связывания объявлена, но не используется. У меня есть только версия 11, которая автоматически отменяет выбор неиспользуемых переменных привязки в нижней панели при выполнении кода. - person William Robertson; 09.05.2017

Мне удалось запустить функцию следующим образом:

 declare 
     v varchar2(1000);
 begin
     select pkg.get(940) into v from dual;
     dbms_output.put_line(v);
 end;

Кроме того, согласно комментарию APC, есть список свойств (небольшое окно, появляющееся под рабочим листом PL/SQL, с переменной, типом и значением поля). Вам нужно ввести значение, которое вы хотите передать в поле значения, и нажать «Выполнить» (сочетание клавиш-F8). Результат будет показан и выделен желтым цветом в том же окне списка свойств. Щелкните ссылку ниже, чтобы перейти к снимку экрана:

Вызов функции с одним параметром

person Natty    schedule 09.05.2017

Я предполагаю, что вы все еще находитесь в pl/sql «Тестовое окно», когда вы изменили исходный тестовый код на свой собственный. Pl/sql иногда глючит. Откройте новое «окно SQL» и попробуйте запустить его с помощью dbms_output.put_line(), чтобы увидеть результат.

person Ychdziu    schedule 09.05.2017
comment
PL/SQL иногда глючит? Почему окно SQL работает лучше, чем окно Test? - person William Robertson; 09.05.2017
comment
Во-первых, я не утверждал, что окно SQL работает лучше, чем окно Test. Он использует более старую версию разработчика plsql. Запуская тестовое окно, вы устанавливаете конкретное тестовое окно с определенным фоном. И делая изменения в этом окне, plsql может запутаться. В версии 12+ он работает нормально, даже если вы его модифицируете. - person Ychdziu; 09.05.2017
comment
PL/SQL не глючит и не путается. Возможно, вы имели в виду PL/SQL Developer. И я не вижу, какое отношение фон окна имеет к обработке переменных связывания. - person William Robertson; 09.05.2017