存储过程中调用存储过程时,关于传入数组的错成。

fullor2000 2010-06-17 03:02:45
CREATE OR REPLACE TYPE PJMANAGE.TYPE_HK01001B_1 AS OBJECT (

T_I_WEEK_NO varchar2(4), --通算週ナンバー
T_I_FIXED_DT date, --確定週頭年月日
T_I_UPDT_IP varchar2(15) --更新IPアドレス
);

CREATE OR REPLACE type PJMANAGE.TEST2 AS TABLE OF TYPE_HK01001B_1

上面是数据类型
然后是存储过程调用

declare
A1 TYPE_HK01001B_1:=TYPE_HK01001B_1('2','2010/10/10','44');
A2 TYPE_HK01001B_1:=TYPE_HK01001B_1('e','2010/11/11','ww');
B1 TEST2:=TEST2(A1,A2);

A3 TYPE_HK01001B_1;
B2 TEST2;
BEGIN
TESTARRLIST(B1,stautes);--存储过程调用,写入的参数数组没有问题
但是如果我在另外的存储过程中调用这个TESTARRLIST过程的话我就要在存储过程中生成TEST2这个数组。
FOR i IN 1..4
LOOP
A3:=TYPE_HK01001B_1(TO_CHAR(i),'2010/10/10','gg');
--************************************8
--B2:=TEST2(A3); 这步应该怎么写,请教各位大虾。
--************************************
现在这样的写法数组中只有最后一条的数据。
END LOOP;
TESTARRLIST(B2,stautes);--
END;



...全文
131 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ngx20080110 2010-06-17
  • 打赏
  • 举报
回复
declare
A1 TYPE_HK01001B_1:=TYPE_HK01001B_1('2','2010/10/10','44');
A2 TYPE_HK01001B_1:=TYPE_HK01001B_1('e','2010/11/11','ww');
B1 TEST2:=TEST2(A1,A2);

A3 TYPE_HK01001B_1;
B2 TEST2 := TEST2(); --初始化
BEGIN
TESTARRLIST(B1,stautes);--存储过程调用,写入的参数数组没有问题
但是如果我在另外的存储过程中调用这个TESTARRLIST过程的话我就要在存储过程中生成TEST2这个数组。
FOR i IN 1..4
LOOP
A3:=TYPE_HK01001B_1(TO_CHAR(i),'2010/10/10','gg');
--************************************8
--B2:=TEST2(A3); 这步应该怎么写,请教各位大虾。
B2.extend; -- 分配空间
B2(i) = A3;

--************************************
现在这样的写法数组中只有最后一条的数据。
END LOOP;
TESTARRLIST(B2,stautes);--
END;
ngx20080110 2010-06-17
  • 打赏
  • 举报
回复

declare
A1 TYPE_HK01001B_1:=TYPE_HK01001B_1('2','2010/10/10','44');
A2 TYPE_HK01001B_1:=TYPE_HK01001B_1('e','2010/11/11','ww');
B1 TEST2:=TEST2(A1,A2);

A3 TYPE_HK01001B_1;
B2 TEST2 := TEST2(); --初始化
BEGIN
TESTARRLIST(B1,stautes);--存储过程调用,写入的参数数组没有问题
但是如果我在另外的存储过程中调用这个TESTARRLIST过程的话我就要在存储过程中生成TEST2这个数组。
FOR i IN 1..4
LOOP
A3:=TYPE_HK01001B_1(TO_CHAR(i),'2010/10/10','gg');
--************************************8
--B2:=TEST2(A3); 这步应该怎么写,请教各位大虾。
B2.extend; -- 分配空间
B2(i) = A3;

--************************************
现在这样的写法数组中只有最后一条的数据。
END LOOP;
TESTARRLIST(B2,stautes);--
END;

ngx20080110 2010-06-17
  • 打赏
  • 举报
回复

declare
A1 TYPE_HK01001B_1:=TYPE_HK01001B_1('2','2010/10/10','44');
A2 TYPE_HK01001B_1:=TYPE_HK01001B_1('e','2010/11/11','ww');
B1 TEST2:=TEST2(A1,A2);

A3 TYPE_HK01001B_1;
B2 TEST2 := TEST2(); --初始化
BEGIN
TESTARRLIST(B1,stautes);--存储过程调用,写入的参数数组没有问题
但是如果我在另外的存储过程中调用这个TESTARRLIST过程的话我就要在存储过程中生成TEST2这个数组。
FOR i IN 1..4
LOOP
A3:=TYPE_HK01001B_1(TO_CHAR(i),'2010/10/10','gg');
--************************************8
--B2:=TEST2(A3); 这步应该怎么写,请教各位大虾。
B2.extend; -- 分配空间
B2(i) = A3;

--************************************
现在这样的写法数组中只有最后一条的数据。
END LOOP;
TESTARRLIST(B2,stautes);--
END;

cyousor 2010-06-17
  • 打赏
  • 举报
回复
用extent???

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧