Создание временных таблиц в хранимой процедуре 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