一个存储过程里的参数是在数据库里定义的数组,,我sqlplus下想执行,该给它传入一个什么样的数组呢并且怎么样初始化呢???
sqlplus下:
declare
b FloatArrayTyp ;
a initArrayTyp ;
begin
a(1):=1.0;
b(1):=1.2;
c$mv.ins_pcoil_mv (0,0,0,a(1),b(1),b(1),b(1),ture);
end ;
报:参数类型错误 ,估计是初始化错了?怎么样初始化呢??
FloatArrayTypinitArrayTyp都是数据库里的数组?
下面是数据库里的包中的过程和数据库中定义数组的代码:
CREATE OR REPLACE
TYPE FloatArrayTyp IS TABLE OF FLOAT ;
/
CREATE OR REPLACE
TYPE IntArrayTyp IS TABLE OF INTEGER ;
过程如下:
PROCEDURE ins_pcoil_mv (
p_pcoilsid IN INTEGER
,p_chan IN INTEGER
,p_cnt IN INTEGER
,p_pos IN IntArrayTyp
,p_avg IN FloatArrayTyp
,p_min IN FloatArrayTyp
,p_max IN FloatArrayTyp
,p_commit IN BOOLEAN DEFAULT TRUE
)
IS
dummy integer;
rrec mv_var := mv_var(mv_obj(null,null,null,null));
BEGIN
rrec.extend(p_cnt-1,1);
for i in 1 .. p_cnt loop
if p_pos(i)ed
已写入文件 afiedt.buf
1declare
2b FloatArrayTyp ;
3a IntArrayTyp ;
4begin
5a:=IntArrayTyp ();
6b:=FloatArrayTyp ();
7a(1):=1.0;
8b(1):=1.2;
9c$mv.ins_pcoil_mv (0,0,0,a,b,b,b,true);
10* end ;
SQL> /
declare
*
ERROR 位于第 1 行:
ORA-06532: 下标超出限制
ORA-06512: 在line 7
|