创建的类型:
create or replace TYPE BE_OBJ_TYP AS OBJECT
(
BE_TRNID VARCHAR2(32),
BE_LOGTIMESTMP TIMESTAMP(6),
BE_SERVID INTEGER,
BE_MSGTYP VARCHAR2(30),
BE_REQID VARCHAR2(32),
BE_SRCSYS VARCHAR2(10),
BE_DSTSYS VARCHAR2(10),
BE_ENTEXT VARCHAR2(5),
BE_MSGDIR VARCHAR2(3),
BE_ERRCODE VARCHAR(10),
BE_MW_TRNS_ID VARCHAR2(32),
BE_REQ_TYP VARCHAR2(3),
BE_TOT_LAT DECIMAL,
BE_BACKEND_LAT DECIMAL,
VE_PAY_REF VARCHAR2(10)
);
和
create or replace type OBJTYPLIST as varray(10) of BE_OBJ_TYP
禁止程序如下:
create or replace PROCEDURE TEST1PROC(TRANSID VARCHAR2 ,MSGTYP varchar2 ,TOTAL_LATENCY varchar2,aa in OBJTYPLIST)
AS
BB BE_OBJ_TYP;
ACount integer;
SerId VARCHAR2(20);
BESerId varchar(20);
TS TIMESTAMP := current_timestamp ;
BEGIN
select service_id into serid from service_metadata where service_name= msgtyp ;
insert into ashutoshlog(transactionid,log_timestamp,service_id, messagetype, total_latency)
values(TRANSID,TS,SerId,MSGTYP,TOTAL_LATENCY );
commit;
for BB in aa loop
select be_service_id into beserid from backend_service_metadata where be_service_name=bb.BE_MSGTYP;
dbms_output.put_line('Done till here');
insert into soadetaillog(transactionid, service_id, be_service_id, latency) values(TRANSID,SerId,beserid,bb.BE_BACKEND_LAT);
--insert into BE_SERVICE_DETAILS(messagetype,total_latency, versionnum) values (bb(1),bb(2),bb(3));
dbms_output.put_line('Inserted');
commit;
end loop;
END;
我不知道锄头在aa里面循环BB。表示如何遍历数组的每个对象。我在这里尝试过"for BB in aa"命令。但不起作用。有人能提出建议吗。
您必须将其从第一个索引LOOP
到集合中的元素总数。。
- 第一个索引可以直接称为1。。或
COLLECTIONNAME.FIRST
- 可以使用
COLLECTIONNAME.LAST
引用元素的总数
然后集合中的每一行都必须由COLLECTIONNAME(INDEX)访问。COLUMN_NAME
示例:AA(INDEX).BE_TOT_LAT
for idx in 1..aa.COUNT loop
select be_service_id into beserid from backend_service_metadata where be_service_name=aa(idx).BE_MSGTYP;
dbms_output.put_line('Done till here');
insert into soadetaillog(transactionid, service_id, be_service_id, latency) values(TRANSID,SerId,beserid,aa(idx).BE_BACKEND_LAT);
--insert into BE_SERVICE_DETAILS(messagetype,total_latency, versionnum) values (aa(idx).BE_MSGTYP,aa(idx).BE_TOT_LAT,aa(idx).);
dbms_output.put_line('Inserted');
commit;
end loop;