问题描述
我想在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)执行范围:适用于创建和修改的行。