1
CREATE TYPE dname AS OBJECT
(
depno NUMBER,
cnt_dname NUMBER
);
/
CREATE TYPE nt_dname_dname AS TABLE of dname;
/
CREATE OR REPLACE FUNCTION f1 RETURN nt_dname
AS
nt_dname t_d := t_d();
n NUMBER := 0;
BEGIN
FOR x IN
(
SELECT department_id, count(employee_id)
FROM employees
GROUP BY department_id
)
LOOP
nt_dname.EXTEND;
n := n+1;
nt_dname(n) := dname(x.depno,x.cnt_dname);
END LOOP;
RETURN t_d;
END;
/
不完全または不正な形式であると私はそれが間違っているところ親切に示唆次のエラーメッセージオラクル、PL/SQL関数の戻り値の型、ネストした表のエラータイプが
Error: PL/SQL: Compilation unit analysis terminated
Error(1,20): **PLS-00320: the declaration of the type of this expression is
incomplete or malformed**
を取得しています。私は 各部門の従業員の数を得て、それを出力として与えようとしています(RETURNnested_table)。
'nt_dname'は関数の戻り値の型です - これは' nt_dname_dname'でなければなりません、つまりあなたが定義したコレクション型ですか?関数内では 'nt_dname'という名前の変数を宣言しますが、' nt_dname'の型ですが、どこにでも宣言されていない 't_d'を返そうとします。私はいくつかの名前と種類が混ざっていると思う。 –