这是主要的 T_POS_TRN_REC 对象定义
create or replace
TYPE T_POS_TRN_REC AS OBJECT
(
TRANS_HEADER T_POS_TRN_HEADER_REC,
TRANS_DETAILS T_POS_TRN_DETAIL_TBL
--TENDERS T_POS_TRN_TNDR_TBL
)
TYPE T_POS_TRN_HEADER_REC定义
create or replace
TYPE T_POS_TRN_HEADER_REC AS OBJECT
(
SEQUENCE_ID NUMBER,
TRAN_SEQ_NO NUMBER(20),
BUSINESS_DATE TIMESTAMP,
LOCATION_NO NUMBER(10),
TRANSACTION_DATE TIMESTAMP,
REGISTER NUMBER,
TRAN_NO NUMBER(10),
CASHIER VARCHAR2(10),
SALESPERSON VARCHAR2(20 BYTE),
TRAN_TYPE VARCHAR2(6),
SUB_TRAN_TYPE VARCHAR2(6),
ORIG_TRAN_NO NUMBER(10),
ORIG_TRAN_TYPE VARCHAR2(6),
ORIG_REG_NO VARCHAR2(5),
REF_NO1 VARCHAR2(30),
REF_NO2 VARCHAR2(30),
REF_NO3 VARCHAR2(30),
REF_NO4 VARCHAR2(30),
REASON_CODE VARCHAR2(6),
VENDOR_NO VARCHAR2(10),
VENDOR_INVC_NO VARCHAR2(30),
PAYMENT_REF_NO VARCHAR2(16),
PROOF_OF_DELIVERY_NO VARCHAR2(30),
STATUS VARCHAR2(6),
VALUE_SIGN VARCHAR2(1),
VALUE NUMBER(20,4),
BANNER_ID NUMBER(4),
POS_TRAN_IND VARCHAR2(1),
ROUNDED_AMT_SIGN VARCHAR2(1),
ROUNDED_OFF_SIGN VARCHAR2(1),
ROUNDED_AMT NUMBER(20,4),
INCREMENT_ID VARCHAR2(30),
REF_NO26 VARCHAR2(30),
REF_NO27 VARCHAR2(30),
RTLOG_ORIG_SYS VARCHAR2(3),
TRAN_PROCESS_SYS VARCHAR2(3)
);
create or replace
TYPE T_POS_TRN_DETAIL_TBL
AS
TABLE OF T_POS_TRN_DETAIL_REC;
T_POS_TRN_DETAIL_REC类型对象
--------------------------------
create or replace
TYPE T_POS_TRN_DETAIL_REC AS OBJECT
(
SEQUENCE_ID NUMBER,
TRAN_SEQ_NO NUMBER(20),
TRAN_NO NUMBER(10),
ITEM_SEQ_NO NUMBER(4),
ITEM_STATUS VARCHAR2(6),
ITEM_TYPE VARCHAR2(6),
ITEM VARCHAR2(25),
REF_ITEM VARCHAR2(25),
NON_MERCH_ITEM VARCHAR2(25),
VOUCHER_NO VARCHAR2(25),
QTY NUMBER(12,4),
UNIT_RETAIL NUMBER(20,4),
SELLING_UOM VARCHAR2(4),
TAX_IND VARCHAR2(1),
ITEM_SWIPED_IND VARCHAR2(1),
DROP_SHIP_IND VARCHAR2(1),
RETURN_REASON_CODE VARCHAR2(6),
CUSTOMER_ORDER_LINE_NO NUMBER(6),
UNIT_RETAIL_VAT_INCL VARCHAR2(1),
TOTAL_IGTAX_AMT NUMBER(20,4),
CUST_ORDER_NO VARCHAR2(48),
CUST_ORDER_DATE DATE,
FULFILL_ORDER_NO VARCHAR2(48),
NO_INV_RET_IND VARCHAR2(1),
RETURN_WH NUMBER(10),
SALES_TYPE VARCHAR2(1),
RETURN_DISPOSITION VARCHAR2(10),
REF_NO5 VARCHAR2(30),
REF_NO6 VARCHAR2(30),
REF_NO7 VARCHAR2(30),
REF_NO8 VARCHAR2(30)
)
我定义了用于测试上述表类型对象记录的块
DECLARE o_message VARCHAR2(1000);
TRANS_DETAILS t_pos_trn_detail_tbl := t_pos_trn_detail_tbl(t_pos_trn_detail_rec(3,334 ,000341 ,1 ,'ORI' ,'NMITEM' ,'100264317' ,null ,'55555555' ,null ,1 ,89.9 ,'E' ,'Y' ,'Y' ,'Y' ,'RET2' ,908869 ,'N' ,14.38 ,'000035' ,sysdate ,null ,null ,2 ,null ,null ,'5' ,'6' ,'7' ,'8'));
RETURN_ INTEGER;
BEGIN
RETURN_ :=write(o_message,T_POS_TRN_REC(TRANS_DETAILS));
DBMS_OUTPUT.PUT_LINE('RETURN_'||RETURN_);
DBMS_OUTPUT.PUT_LINE('o_message'||o_message);
END;
我在上面的测试中遇到错误,记录通过包过程将数据插入表中-
Error report:
ORA-06550: line 7, column 76:
PLS-00306: wrong number or types of arguments in call to 'T_POS_TRN_REC'
ORA-06550: line 7, column 1:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
有什么替代表类型记录的方法吗?
您将类型定义为:
CREATE TYPE T_POS_TRN_REC AS OBJECT
(
TRANS_HEADER T_POS_TRN_HEADER_REC,
TRANS_DETAILS T_POS_TRN_DETAIL_TBL
--TENDERS T_POS_TRN_TNDR_TBL
);
它有两个属性。
在 PL/SQL 块中,有以下行:
RETURN_ :=write(o_message,T_POS_TRN_REC(TRANS_DETAILS));
仅使用单个参数实例化
T_POS_TRN_REC
。您缺少 TRANS_HEADER
参数。