2017-04-20 2 views
0

Ich versuche, eine Prozedur erstellen, die mir Ergebnisse in Rasterform (wenn es möglich ist) geben wird.Oracle SQL-Verfahren, die Ergebnisse im Raster

tatsächlich, es ist eine normale Abfrage mit 3-5 Parametern, aber ich mag es in einem Verfahren tun (ich es für das Programm verwenden, werde ich mache)

ich weiß, wie einfache Verfahren zu schaffen, sondern diejenigen, gibt mir nur eine Zeilenausgabe. etwas wie folgt aus:

---run procedure 

SET SERVEROUTPUT ON; 

begin 
    procedure_name(param1); 
end; 

---procedure output 

anonymous block completed 

sample procedure_name output 
+0

Kein Glück in Oracle. Sie müssen 'dbms_output.put_line()' (oder etwas Ähnliches) verwenden, um die Ausgabe zu erhalten. Wenn Sie die Ergebnisse einer Abfrage drucken möchten, müssen Sie die Ergebnisse durchlaufen. –

+0

@GordonLinoff this dbms_output.put_line() zeigt nur ein einzelnes Ergebnis oder kann es auch mehrere Ergebnisse anzeigen? auch danke, dass du meine frage bearbeitet hast, ich muss lernen wie das geht. – itsmePJ

+0

@itsmePJ Meinten Sie, dass Sie möchten, dass mehrere Zeilen zurückgegeben werden, wenn die Prozedur ausgeführt wird? – user75ponic

Antwort

0

- Einfaches Verfahren zurückzukehren Cursor als Ausgangsparameter

CREATE OR REPLACE PROCEDURE proc_out_cur (OUT_RES OUT SYS_REFCURSOR) 
AS 
BEGIN 
    OPEN OUT_RES FOR SELECT 22 FROM DUAL; 
END; 
-- Call procedure from anonymous block using bind var for the 
-- cursor output. When prompted by Toad choose CURSOR as the 
-- variable's datatype. 
BEGIN 
    proc_out_cur (:res); 
END; 
0

In Oracle 12c diese DBMS_SQL.RETURN_RESULT Verwendung erreicht werden kann:

create or replace procedure get_data 
    c1 SYS_REFCURSOR; 
    c2 SYS_REFCURSOR; 
BEGIN 
    OPEN c1 FOR 
    select 'First result' as what, 1 as some_number from dual; 
    DBMS_SQL.RETURN_RESULT(c1); 

    OPEN c2 FOR 
    select 'Second result' as what, 2 as second_column, 3 as third_column 
    from dual; 
    DBMS_SQL.RETURN_RESULT(c2); 

END; 
/

es dann auszuführen:

exec get_data; 

Und z.B. SQL * Plus zeigt Folgendes an:

SQL> exec get_data; 

PL/SQL procedure successfully completed. 

ResultSet #1 

WHAT   SOME_NUMBER 
------------ ----------- 
First result   1 

1 row selected. 

ResultSet #2 

WHAT   SECOND_COLUMN THIRD_COLUMN 
------------- ------------- ------------ 
Second result    2   3 

1 row selected. 

SQL> 

Andere SQL-Clients zeigen die Ergebnisse möglicherweise auf andere Weise an.

Verwandte Themen