Oracle 参数数量或类型错误,PL/SQL中出现错误

Oracle 参数数量或类型错误,PL/SQL中出现错误,oracle,plsql,types,record,plsqldeveloper,Oracle,Plsql,Types,Record,Plsqldeveloper,我必须创建一个记录列表,我需要将其发送到一个过程 这是我的头球 CREATE OR REPLACE PACKAGE tema4 IS TYPE obj IS RECORD(id INTEGER := 0,percent INTEGER := 0); TYPE listObj IS TABLE OF obj INDEX BY PLS_INTEGER; PROCEDURE ex1 (p_listObj IN listObj); END tema4; 我的身体 create or replac

我必须创建一个记录列表,我需要将其发送到一个过程

这是我的头球

CREATE OR REPLACE PACKAGE tema4 IS
 TYPE obj IS RECORD(id INTEGER := 0,percent INTEGER := 0);
 TYPE listObj IS TABLE OF obj INDEX BY PLS_INTEGER;
 PROCEDURE ex1 (p_listObj IN listObj);
END tema4;
我的身体

create or replace PACKAGE BODY tema4 IS
PROCEDURE ex1 (p_listObj IN listObj) IS
BEGIN
 DBMS_OUTPUT.PUT_LINE('Cant reach');
END ex1;
END tema4;
还有我调用过程ex1的代码

DECLARE
 TYPE obj IS RECORD(id INTEGER := 0,percent INTEGER := 0);
 TYPE listObj IS TABLE OF obj INDEX BY PLS_INTEGER;
 v_obj obj;
 v_listObj listObj;
BEGIN
 FOR v_i IN (SELECT ID,BURSA FROM STUDENTI ORDER BY ID) LOOP
  v_obj.id := v_i.id;
  v_obj.percent := 50;
  v_listObj(v_i.id) := v_obj;
 END LOOP;
 FOR v_i IN v_listObj.FIRST..v_listObj.LAST LOOP
  DBMS_OUTPUT.PUT_LINE(v_listObj(v_i).id || ' - ' || 
  v_listObj(v_i).percent);
 END LOOP;
 tema4.ex1(v_listObj); --this line is with problems
END;
PLS-00306:调用“EX1”时参数的数量或类型错误


有人能解释一下我的代码出了什么问题吗?我还尝试将我的类型创建为全局类型,但由于'RECORD'关键字,它不允许我使用。

不要再次声明类型(新类型),请使用包规范中已声明的类型:

DECLARE
 v_obj tema4.obj;
 v_listObj tema4.listObj;
BEGIN
 FOR v_i IN (SELECT ID,BURSA FROM STUDENTI ORDER BY ID) LOOP
  v_obj.id := v_i.id;
  v_obj.percent := 50;
  v_listObj(v_i.id) := v_obj;
 END LOOP;
 FOR v_i IN v_listObj.FIRST..v_listObj.LAST LOOP
  DBMS_OUTPUT.PUT_LINE(v_listObj(v_i).id || ' - ' || 
  v_listObj(v_i).percent);
 END LOOP;
 tema4.ex1(v_listObj); --this line is with problems
END;

不要再次声明类型(新类型),请使用包规范中已声明的类型:

DECLARE
 v_obj tema4.obj;
 v_listObj tema4.listObj;
BEGIN
 FOR v_i IN (SELECT ID,BURSA FROM STUDENTI ORDER BY ID) LOOP
  v_obj.id := v_i.id;
  v_obj.percent := 50;
  v_listObj(v_i.id) := v_obj;
 END LOOP;
 FOR v_i IN v_listObj.FIRST..v_listObj.LAST LOOP
  DBMS_OUTPUT.PUT_LINE(v_listObj(v_i).id || ' - ' || 
  v_listObj(v_i).percent);
 END LOOP;
 tema4.ex1(v_listObj); --this line is with problems
END;

谢谢你,先生。它起作用了。我为那件简单的事浪费了好几个小时。谢谢你,先生。它起作用了。我因为那件简单的事浪费了好几个小时。