错误的数字或TYPES参数,PL / SQL中的错误

时间:2018-03-25 12:21:07

标签: oracle plsql types record plsqldeveloper

我必须创建一个RECORD列表,我需要将它发送到一个过程。

有我的标题。

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'关键字,它不会让我。

1 个答案:

答案 0 :(得分:3)

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

* {
 box-sizing:border-box;
}

header {
  width: 100vh;
  border-style: solid;
  border-width: 5px;
  border-color: saddlebrown;
}

header * {
  background-color: chocolate;
}

header h1 {
  text-align: center;
}

header p {
  text-align: justify;
}

.two-columns {
  width: 100vh;
  display:flex;
}

.left-column {
  width: 300px;
}

.right-column {
  flex:1;
  border-style: solid;
  border-width: 5px;
  border-color: green;
  margin:10px;
  padding:10px;
 }