何をしますか:カスタム関数を使用してカスタム関数を使用してテーブルからデータを取得します。テーブルから関数を介して行を取得する
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),
...
私がやったこと:私のカスタム・タイプを作成
CREATE OR REPLACE TYPE "FO_OUTPUT" AS OBJECT
(
NUMCPT VARCHAR2(10),
ACTIONACCOUNT VARCHAR2(50)
)
と
CREATE OR REPLACE TYPE "FO_OUTPUT_TABLE" AS TABLE OF FO_OUTPUT
My機能は次のとおりです。
私のテーブルの構造は以下のようなものです
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;
今すぐ実行: `SELECT * FROM TABLE(OUTPUT_FO)私が持っているのは空白行10個です。
私のコードに間違いがあります。 thnx
ここで私はそれが仕事を得るためにやった
は、私が "SELECT INTO" の使用を混乱しました。複合型を初期化しなければなりませんでした。 –
右、 'TMPLINE'を初期化しなければなりません。 –