Самый простой способ проверить хранимую процедуру Oracle - PullRequest
9 голосов
/ 04 июня 2009

Я работаю над проектом ASP.NET с базой данных Oracle. Мы используем TOAD для добавления / управления хранимыми процедурами - и вообще мне нравятся TOAD и Oracle. Единственное, что меня расстраивает, так это поиск простого способа тестирования Oracle Stored Proc, например, синтаксиса SQL Server «exec [SP_NAME] Param1, Param2, ParamN».

Все наши хранимые процедуры выводят Ref Cursors. Вот пример сохраненного процесса:

CREATE OR REPLACE PROCEDURE APP_DB1.GET_JOB
(
    p_JOB_ID IN JOB.JOB_ID%type,
    outCursor OUT MYGEN.sqlcur
)
IS
BEGIN
    OPEN outCursor FOR
    SELECT *
    FROM JOB
    WHERE JOB_ID = p_JOB_ID;
END GET_JOB;
/

Есть предложения?

Ответы [ 4 ]

13 голосов
/ 05 июня 2009

Вам просто нужен скрипт, который вызывает вашу хранимую процедуру и имеет переменную связывания для вывода курсора ref, чтобы отобразить его в сетке TOAD в окне редактора.

DECLARE
 type result_set is ref cursor; 
BEGIN
 APP_DB1.GET_JOB(1, :result_set);
END;

Когда вы затем запустите этот TOAD, вам будет предложено «связать»: result_set, просто выберите ref cursor из списка типов, и затем результат отобразится в сетке. Хитрость заключается в том, чтобы думать о себе как о «клиенте», вызывающем вашу хранимую процедуру, и вам нужен собственный курсор ref для сохранения результата.

1 голос
/ 05 июня 2009

В sqplus вы можете использовать синтаксис

SQL> var rc refcursor

SQL> exec APP_DB1.GET_JOB (идентификатор задания, который вы хотите запросить:

SQL> print rc

Это должно сделать это. Первая строка определяет переменную связывания. Вы также можете определить переменную для идентификатора задания или просто ввести ее.

1 голос
/ 04 июня 2009

Если вы просто ищете способ вызвать SP, то путь Oracle:

begin
  sp_name(....);
end;

Я не использую Toad, но вы должны иметь возможность поместить это в окно SQL и выполнить его.

0 голосов
/ 25 января 2016

TOAD показывает результат в сетке, просто отлично с примером сценария от Рассела. Запустить как скрипт.

variable  P_CUR refcursor;
exec  PACK.GETEXECUTION ( '9f363e49-88c1-4295-b61e-60812d620d7e', '6', :P_CUR );
print P_CUR;

Спасибо! * * 1004

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