Создание временных таблиц в хранимой процедуре Oracle для отображения в Crystal Reports

В SQL Server я могу создавать хранимые процедуры, которые создают временную таблицу, вставлять в нее значения, а затем возвращать выбор из этой временной таблицы, который будет набором результатов для составного Crystal Report.

Я понятия не имею, как выполнить это в хранимых процедурах Oracle.

Я знаю, что могу создать строковую переменную и затем выполнить немедленно. Но тогда я не знаю, как вставить значения, и что результирующий набор будет источником Crystal Report.

1 ответ

Вы можете попробовать это, используя процедуру plsql следующим образом.

CREATE PROCEDURE testRS (lcout OUT sys_refcursor) AS
  BEGIN
    OPEN lcout 
    FOR 
    SELECT object_name, object_type 
    FROM user_objects;
  END testRS;

sys_refcursor является слабым курсором, что означает, что он может указывать на любой запрос, и никакой тип не применяется.

Для выполнения в sqlplus (аналогичный API должен быть доступен в Crystal Report), вам необходимо определить переменную sqlplus, которая содержит набор результатов из курсора внутри процедуры.

-- Define sqlplus variable
SQL> var ncc refcursor;

-- Call to procedure.
SQL> exec TESTPKG.testRS( :ncc );

PL/SQL procedure successfully completed.

-- Display the resultset.
SQL> print :ncc;

Надеюсь, поможет,

Dhimant

Другие вопросы по тегам