JMeter - как вызвать функцию Oracle через JDBC Request - PullRequest
0 голосов
/ 11 января 2019

Я использую JMeter для тестирования некоторых функций и процедур Oracle. Я хочу использовать JDBC request сэмплер для вызова функции (не хранимой процедуры). Функция, которую я хочу вызвать, специфична, поскольку в ней содержится операция DML (выполняет вставку), поэтому я не могу поместить ее в оператор выбора, так как это приведет к ошибке ORA-14551 - cannot perform a DML operation inside a query.

Итак, попытка выполнить запрос JDBC с оператором типа запроса:

BEGIN

  {call MY_PACKAGE.MY_FUNCTION(?,?)};

END;

или

{call MY_PACKAGE.MY_FUNCTION(?,?)};

enter image description here

! EDIT!

Добавление скриншота для отображения функции не может быть вызвано таким образом: enter image description here

или выберите оператор:

select MY_PACKAGE.MY_FUNCTION(?,?) from dual

не будет работать (возвращает PLS-00221 и ORA-14551 соответственно). Теперь я знаю, как обрабатывать такие функции с помощью JSR223 Sampler (например, скрипт Groovy), но вопрос в том, можно ли это сделать с помощью JDBC Request (и, как следствие, сохранить выходные данные функции в переменной jmeter)?

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

create or replace package my_package
is
    function my_function(par1 varchar2, par2 varchar2) return varchar2;
end my_package;

create or replace package body my_package
is

    function my_function(par1 varchar2, par2 varchar2) return varchar2
    is

    begin    
        return 'Test_Output';
    end my_function;

end my_package;

1 Ответ

0 голосов
/ 11 января 2019

Использовать тип запроса Вызываемый оператор с запросом:

{call MY_PACKAGE.MY_FUNCTION(?,?)}

Как правило, нет необходимости использовать {и} для включения операторов Callable; однако они могут использоваться, если база данных использует нестандартный синтаксис.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...