Was ich tun möchte: Abrufen von Daten aus einer Tabelle mithilfe der benutzerdefinierten Funktion und Verwendung von benutzerdefinierten Typen.Abrufen von Zeilen aus der Tabelle über die Funktion
Die Struktur meiner Tabelle ist unten wie:
create table ACCOUNTCONTRACT
(
accountcode_ VARCHAR2(255 CHAR),
accountmig_ NUMBER(1),
accountnumber_ VARCHAR2(25 CHAR) not null,
accountpk_ NUMBER(19),
addinfo1_ VARCHAR2(255 CHAR),
addinfo2_ VARCHAR2(255 CHAR),
...
was ich getan habe:
meine Benutzerdefinierte Typen erstellenCREATE OR REPLACE TYPE "FO_OUTPUT" AS OBJECT
(
NUMCPT VARCHAR2(10),
ACTIONACCOUNT VARCHAR2(50)
)
UND
CREATE OR REPLACE TYPE "FO_OUTPUT_TABLE" AS TABLE OF FO_OUTPUT
Meine Funktion ist:
CREATE OR REPLACE FUNCTION OUTPUT_FO RETURN FO_OUTPUT_TABLE AS
RETVAL FO_OUTPUT_TABLE := FO_OUTPUT_TABLE();
TMPLINE FO_OUTPUT;
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
FOR I IN (SELECT SUBSTR(ACC.ACCOUNTNUMBER_, 1, 10) AS NUMCPT,
ACC.ACCOUNTNUMBER_ AS ACTIONACCOUNT
INTO TMPLINE.NUMCPT, TMPLINE.ACTIONACCOUNT
FROM ACCOUNTCONTRACT ACC
WHERE ROWNUM < 10) LOOP
RETVAL.EXTEND;
RETVAL(RETVAL.COUNT) := TMPLINE;
END LOOP;
RETURN(RETVAL);
END OUTPUT_FO;
Wenn ich jetzt folgendes ausführe: `SELECT * FROM TABLE (OUTPUT_FO) Alles, was ich bekomme, sind 10 leere Zeilen.
Was ist falsch mit meinem Code. Thnx
ich verwirrt die Verwendung von "select into". musste den zusammengesetzten Typ initialisieren. –
rechts, 'TMPLINE' muss initialisiert werden. –