【发布时间】:2017-04-21 07:40:12
【问题描述】:
我自己做了一个data_object:
CREATE OR REPLACE TYPE my_object AS OBJECT(
number_type NUMBER,
varchar_type VARCHAR2(20)
)
然后我创建类型
CREATE OR REPLACE TYPE my_nt IS TABLE OF my_object;
我想用嵌套表和这个对象做一个程序,将返回某些部门的雇员人数。我有两张表:员工和部门这是我的代码:
DECLARE
enum_dname my_nt := my_nt();
PROCEDURE print_l IS
BEGIN
DBMS_OUTPUT.put_line('---------------------------------------------------------');
FOR i IN 1..enum_dname.COUNT
LOOP
DBMS_OUTPUT.PUT_LINE(enum_dname(i));
END LOOP;
END;
BEGIN
SELECT COUNT(emp_id) as number_of, department_name
BULK COLLECT INTO enum_dname
FROM employees e, department d
WHERE e.department_id = d.department_id
GROUP BY department_name;
print_l;
END;
它显示错误:PLS - 00306:调用类型中的参数数量错误:PUT_LINE
和 PL\SQL:ORA - 00947:没有足够的值
谢谢!
【问题讨论】:
-
不应该是
enum_dname(i).number_type或enum_dname(i).varchar_type而不仅仅是enum_dname(i)。你试过吗? -
@SudiptaMondal:我认为你应该把它作为一个答案