[Oracle 9 PL/SQL] Wie stelle ich in einer Funktion/Prozedur eine Tabelle dar?

Basti54

Erfahrenes Mitglied
Einfache, kurze Frage:

Wie veranlasse ich eine Funktion/Prozedur, Selects in einer Tabelle darzustellen?
 
Ich versteh zwar nicht genau was du vor hast, aber wenn es dir nur darum geht mit PL/SQL eine Ausgabe zu machen, dann sollte dir dieses Beispiel helfen:

Als User SCOTT:
Code:
SQL> SET SERVEROUTPUT ON
SQL>
SQL> CREATE OR REPLACE PROCEDURE PRINT_SELECT
  2  IS
  3      CURSOR c1 IS
  4          SELECT ename
  5            FROM emp;
  6  BEGIN
  7
  8      DBMS_OUTPUT.enable( 1000000 );
  9      FOR row IN c1 LOOP
 10
 11          DBMS_OUTPUT.put_line( row.ename );
 12
 13      END LOOP;
 14  END;
 15  /

Prozedur wurde angelegt.

SQL>
SQL> exec print_select;
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER

PL/SQL-Prozedur wurde erfolgreich abgeschlossen.

Die andere Möglichkeit wäre, du lässt die Funktion einen REF Cursor zurückgeben und schaust dir den per SQL*Plus an.

Code:
SQL> CREATE OR REPLACE FUNCTION RETURN_SELECT
  2      RETURN SYS_REFCURSOR
  3      IS
  4
  5      TYPE c1 IS REF CURSOR;
  6      cursor1 c1;
  7
  8  BEGIN
  9
 10      OPEN cursor1 FOR SELECT ename FROM emp;
 11      RETURN cursor1;
 12
 13  END;
 14  /

Funktion wurde erstellt.

SQL> SELECT RETURN_SELECT FROM DUAL;

RETURN_SELECT
--------------------
CURSOR STATEMENT : 1

CURSOR STATEMENT : 1

ENAME
----------
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER

14 Zeilen ausgewõhlt.
 

Neue Beiträge

Zurück