在oracle apex中调用或使用oracle数组程序包

问题描述

我想在oracle apex页面过程中调用oracle数组包。 我的软件包“创建或替换软件包SBPA.DPG_SBPA_ITEM_SUB_CAT AS

/ ...................................... ............................... 程序用途:SBPA_ITEM_SUB_CAT_ENTRY 流程执行时间:
产生者:捣碎 产生日期:2020年2月27日 修改日期: ................................................... ...................
/

TYPE RefCursor是REF CURSOR;

TYPE Array_Item_Sub_Id是SBPA_ITEM_SUB_CAT.ITEM_SUB_ID的表%BINARY_INTEGER类型索引; 类型Array_Item_Sub_Code是SBPA_ITEM_SUB_CAT.ITEM_SUB_CODE的表%类型索引由BINARY_INTEGER; 类型Array_Item_Sub_Desc是SBPA_ITEM_SUB_CAT.ITEM_SUB_DESC表BINARY_INTEGER类型索引 类型Array_Item_Cat_Code是SBPA_ITEM_SUB_CAT.ITEM_CAT_CODE的表%类型索引,由BINARY_INTEGER; TYPE Array_RowStatus是VARCHAR2(5)的表,由BINARY_INTEGER索引;

PROCEDURE DPD_SBPA_ITEM_SUB_CAT(O_状态OUT NUMBER, P_Item_Sub_Id IN Array_Item_Sub_Id, P_Item_Sub_Code IN Array_Item_Sub_Code, P_Item_Sub_Desc在Array_Item_Sub_Desc中, P_Item_Cat_Code IN Array_Item_Cat_Code, P_RowStatus IN Array_RowStatus, P_USER VARCHAR2);

过程DPD_SBPA_ITEM_SUB_CAT_GRID(Cur_Data OUT RefCursor);

END DPG_SBPA_ITEM_SUB_CAT; /“

和包装正文“创建或更换包装体SBPA.DPG_SBPA_ITEM_SUB_CAT AS

/ ...................................... ............................... 程序用途:SBPA_ITEM_SUB_CAT_ENTRY 流程执行时间:
产生者:捣碎 产生日期:2020年2月27日 修改日期: ................................................... ...................
/

PROCEDURE DPD_SBPA_ITEM_SUB_CAT(O_状态OUT NUMBER, P_Item_Sub_Id IN Array_Item_Sub_Id, P_Item_Sub_Code IN Array_Item_Sub_Code, P_Item_Sub_Desc在Array_Item_Sub_Desc中, P_Item_Cat_Code IN Array_Item_Cat_Code, P_RowStatus IN Array_RowStatus, P_USER VARCHAR2)是

V_DataType     VARCHAR2(20) :='ITEM_SUBCAT_SAVE';
V_ErrDesc   VARCHAR2(500);
                                                      

开始

/*O_Status :=1;*/

FOR I IN P_Item_Sub_Desc.FirsT..P_Item_Sub_Desc.LAST
LOOP
  
        IF P_RowStatus(I)=1 THEN
                    
            INSERT INTO SBPA_ITEM_SUB_CAT 
            (ITEM_SUB_ID,ITEM_SUB_CODE,ITEM_SUB_DESC,ITEM_CAT_CODE,STATUS,CREATE_DATE,CREATE_BY) VALUES
            (SBPA_ITEM_SUB_ID_SEQ.NEXTVAL,'ITMSC-'||LPAD(SBPA_ITEM_SUB_CODE_SEQ.NEXTVAL,4,'0'),P_Item_Sub_Desc(I),P_Item_Cat_Code(I),'A',SYSDATE,P_USER);
                        
        ELSIF P_RowStatus(I)=2 THEN
                    
            UPDATE SBPA_ITEM_SUB_CAT SET
            ITEM_SUB_DESC=P_Item_Sub_Desc(I),Item_Cat_Code=P_Item_Cat_Code(I),UPDATE_BY=P_User,UPDATE_DATE =SYSDATE
            WHERE Item_Sub_Code=P_Item_Sub_Code(I);
                    
        ELSIF P_RowStatus(I)=3 THEN
            
            DELETE FROM SBPA_ITEM_SUB_CAT
            WHERE Item_Sub_Code=P_Item_Sub_Code(I);              
                    
        END IF;
    
END LOOP;

COMMIT;

其他人回滚时会出乎意料;

/ * O_Status:= 0; * / V_ErrDesc:= SUBSTR(sqlERRM,1,500);

INSERT INTO SBPA_ERROR_LOG

(RUN_ID,DATA_TYPE,ERROR_DESC,STATUS,RUN_DATE,RUN_BY)VALUES (SBPA_RUN_ID_SEQ.NEXTVAL,V_DataType,V_ErrDesc,'E',SYSDATE,P_User);

COMMIT; 

END DPD_SBPA_ITEM_SUB_CAT;

PRODEDURE DPD_SBPA_ITEM_SUB_CAT_GRID(Cur_Data OUT RefCursor)是

开始

OPEN CUR_DATA FOR
SELECT ITEM_SUB_ID,S.ITEM_CAT_CODE,C.ITEM_CAT_DESC FROM SBPA_ITEM_SUB_CAT S,SBPA_ITEM_CAT C
WHERE S.ITEM_CAT_CODE=C.ITEM_CAT_CODE
ORDER BY ITEM_SUB_ID DESC;

END DPD_SBPA_ITEM_SUB_CAT_GRID;

END DPG_SBPA_ITEM_SUB_CAT; /” 此数据库代码。因此,如何以oracle apex表格形式调用此软件包。请帮助我。

解决方法

(1)创建一个按钮,因此单击该按钮即可执行处理(DML)。

(2)按钮操作->提交页面。

(3)创建页面处理

Point -> Processing. 
Tabular Form -> Select your tabular form.
Pl/SQL Code ->  Begin 
                package_name.procedure_name(parameters);  
                END;        

(4)按下按钮时:选择创建的按钮。

(5)执行范围:适用于创建和修改的行。