TORA выполняет процедуру с пакетом OUT REF CURSOR - PullRequest
2 голосов
/ 10 августа 2011

Я пытаюсь выполнить процедуру пакета, которая имеет пару параметров и параметр REF CURSOR out, но, похоже, не может понять это для TORA (моя SQL IDE)

Вот надуманный пример процедуры, которую я хотел бы выполнить, и вижу курсор для:

PROCEDURE get_peeps_in_city ( pi_city IN varchar(100), po_recordset OUT REF CURSOR )
    IS
    BEGIN
         OPEN po_recordset
         FOR Select Id, 
                FName, 
                LName
             FROM People
             WHERE City like '%' || pi_city || '%'
    END;

Вот что я пробовал до сих пор:

DECLARE
    v_cursor REF CURSOR;
BEGIN
    execute PKG_PEEPS.get_peeps_in_city('Chicago', v_cursor);
END

Ошибка, которую я получаю, выглядит следующим образом:

PLS-00103: Обнаружен символ «END» при ожидании одного из следующих действий: тип функции прагмы пакета функций начало тип использования курсора формы

1 Ответ

3 голосов
/ 10 августа 2011

Вы, вероятно, ищете что-то вроде этого:

DECLARE
    v_cursor SYS_REFCURSOR;
    v_Id NUMBER;
    v_FName VARCHAR2(200);
    v_LName VARCHAR2(200);
BEGIN
    PKG_PEEPS.get_peeps_in_city('Chicago', v_cursor);

    LOOP
      FETCH v_cursor INTO v_Id, v_FName, v_LName;
      EXIT WHEN v_cursor%NOTFOUND;
        -- do something with v_Id, v_FName, v_LName
    END LOOP;
    CLOSE v_cursor;
END;
/

Обновление:

Возможно, вы хотели бы, чтобы результат вашего запроса отображался в вашей IDE, как если бы вы выполняли оператор SELECT напрямую. Этого не произойдет с приведенным выше кодом, и я не знаю ни одного кода, который мог бы достичь этого (если вы не установите конкретную табличную функцию).

Лучшее, что вы можете сделать, это вывести полученные данные в цикле (используя DBMS_OUTPUT.PUT_LINE).

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