oracle存储过程怎么将变量扔进数组
CREATEORREPLACEPROCEDURE"P_TEST_TEXT"isOLD_VALvarchar2(100):='{(38400,23),(37900,),(3...
CREATE OR REPLACE PROCEDURE "P_TEST_TEXT"
is
OLD_VAL varchar2(100) := '{(38400,23),(37900,),(38950,23),(38098,),(39148,)}',
NEW_VAL varchar2(100) := '{(38400,23),(37900,),(38950,23),(39148,),(38098,)}'
begin
①TYPE valarray IS TABLE OF varchar2(100) INDEX BY BINARY_INTEGER;
VAL1 varchar2(100):=substr(OLD_VAL,2,length(OLD_VAL)-2);
WHILE VAL1<>'' LOOP
BEGIN
VAL2=substr(VAL1,instr(VAL1,'('),instr(VAL1,')'));
VAL3=substr(VAL2,instr(VAL2,',')+1,instr(VAL1,')')-instr(VAL2,',')-1);
②valarray1 valarray;
③?
VAL1=substr(VAL1,length(VAL2)+2,length(VAL1)-length(VAL2)-1);
END;
END LOOP;
在①处定义了一个数组类型,在②处声明了一个数组,请问怎么在③处把VAL3这个字符串扔进数组里,像java的集合的add方法一样 展开
is
OLD_VAL varchar2(100) := '{(38400,23),(37900,),(38950,23),(38098,),(39148,)}',
NEW_VAL varchar2(100) := '{(38400,23),(37900,),(38950,23),(39148,),(38098,)}'
begin
①TYPE valarray IS TABLE OF varchar2(100) INDEX BY BINARY_INTEGER;
VAL1 varchar2(100):=substr(OLD_VAL,2,length(OLD_VAL)-2);
WHILE VAL1<>'' LOOP
BEGIN
VAL2=substr(VAL1,instr(VAL1,'('),instr(VAL1,')'));
VAL3=substr(VAL2,instr(VAL2,',')+1,instr(VAL1,')')-instr(VAL2,',')-1);
②valarray1 valarray;
③?
VAL1=substr(VAL1,length(VAL2)+2,length(VAL1)-length(VAL2)-1);
END;
END LOOP;
在①处定义了一个数组类型,在②处声明了一个数组,请问怎么在③处把VAL3这个字符串扔进数组里,像java的集合的add方法一样 展开
1个回答
展开全部
先自定义集合类型变量类型,然后定义对应的变量,直接把集合类型穿给存储过程就可以了,不用在存储过程中搞,应用程序中搞好传过去就可以了,我都是这样搞的
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询