Ho memorizzato la procedura che esegue un'altra stored procedure più volte. Ho bisogno di unione e dati di ritorno, che ho dopo aver eseguito la seconda procedura.Unione dati da cursori in uno
Posso in qualche modo collegare i dati di più cursori in un altro cursore? È possibile senza tabelle temporanee o tipi di dati simili a tabelle?
MODIFICA: il conteggio del cursore per unione in realtà è n (dove n è 1, 2, 3, ecc., Che rileva con un'altra procedura).
Ad esempio:
CREATE OR REPLACE PROCEDURE proc_data
(data_out OUT SYS_REFCURSOR
) IS
BEGIN
OPEN data_out FOR SELECT '1' NUM FROM dual;
END;
/
CREATE OR REPLACE PROCEDURE proc_result
(data_out OUT SYS_REFCURSOR
) IS
data1 SYS_REFCURSOR;
data2 SYS_REFCURSOR;
BEGIN
PROC_DATA(data1);
PROC_DATA(data2);
-- select data1 and data2 into data_out - how?
END;
/
SET SERVEROUTPUT ON
DECLARE
data_out SYS_REFCURSOR;
temp_row VARCHAR2(10);
BEGIN
PROC_RESULT(data_out);
LOOP
FETCH data_out INTO temp_row;
EXIT WHEN data_out%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(temp_row);
END LOOP;
CLOSE data_out;
END;
/
risultato atteso:
---
1
1
n essere costante o variabile? –
n - variabile. Questo è stato solo un esempio per spiegare la mia domanda, in veri e propri conteggi dei cursori db che l'unione sta rilevando con un'altra procedura. – ksogor
Quindi è possibile creare dinamicamente la tabella di selezione (PROC_DATA (data1)) tabella unione (PROC_DATA (data2)) (PROC_DATA (data3)) ... query ed eseguirla –