У меня есть PL \ SQL, который возвращает набор данных, который по существу проверяет тома по счету || продукт в двух разных таблицах.Настройка SYS_REFCURSOR в PL SQL для возврата набора данных
Моя конечная цель состоит в том, чтобы этот набор данных вытащил непосредственно в электронную таблицу (используя Excel-VBA), передав параметры даты (предоставленные через Excel) и вызвав хранимую процедуру.
После чтения бит на PL \ SQL, мне кажется, что мне нужна переменная курсора для хранения набора данных конечных результатов, который предоставляется, поэтому я могу записать его в электронную таблицу (в виде набора записей).
Следующие примеры в Интернете, я написал свою процедуру, как так
CREATE OR REPLACE PROCEDURE PROC_REG_SPLIT_RECON (dStart IN Date, dEnd IN Date)
-- procedure to check regional splits creation is okay
-- procedure checks volumes by account and product from FACT_TRADE_PRESPLIT_ROLLUP to FACT_TRADE_ROLLUP
-- SQLDeveloper doesn't like this section and I can't figure out how to set this up correctly, no matter what I do and research.
RETURN SYS_REFCURSOR
AS
l_return SYS_REFCURSOR;
-- end of section not working
BEGIN
OPEN l_return FOR
SELECT OpStats.Account, OpStats.Platform, OpStats.Volume OpStatsVol, RegSplits.Volume RegSplitsVol, (OpStats.Volume-RegSplits.Volume) Difference FROM
(a bunch of union queries) OpStats,
(a bunch of other union queries) RegSplits
WHERE OpStats.Account = RegSplits.Account (+) And OpStats.Platform = RegSplits.Platform (+)
ORDER BY OpStats.Account ASC, OPStats.Platform DESC;
RETURN l_return;
END;
FWIW, запросы работают нормально и возвращать результаты, как и ожидалось. Кто-нибудь знает, почему мой PL \ SQL не компилируется? Или если я ухожу из базы в своем подходе?