sqlplus下执行带数组参数的过程?

[复制链接]
查看11 | 回复2 | 2007-9-26 18:42:10 | 显示全部楼层 |阅读模式
一个存储过程里的参数是在数据库里定义的数组,,我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
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
a:=IntArrayTyp ();--初始化一个空数组
a.extend;--扩展数组 添加一个数组元素
a(1):=1.0;
回复

使用道具 举报

千问 | 2007-9-26 18:42:10 | 显示全部楼层
ORA-06532: 下标超出限制
查查extend的用法吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行