私は、2つの異なるテーブルでaccount || productによって本質的にボリュームを検証するデータセットを返すPL \ SQLを持っています。PL¥SQLのSYS_REFCURSORをデータセットを返すように設定する
私の最終目標は、Excelから提供された日付パラメータを渡してストアドプロシージャを呼び出して、このデータセットをスプレッドシート(Excel-VBAを使用)に直接プルすることです。
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がコンパイルされていない理由を知っていますか?それとも、私のアプローチで根元から離れているのか?