我编写了一个选择一些数据并插入表格的程序。代码编译成功。但是,当我传递数据来执行该过程时,我收到如下错误:
Error report -
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at "CUSTOM.BPUBPF", line 51
ORA-06512: at line 7
06502. 00000 - "PL/SQL: numeric or value error%s"
*Cause: An arithmetic, numeric, string, conversion, or constraint error
occurred. For example, this error occurs if an attempt is made to
assign the value NULL to a variable declared NOT NULL, or if an
attempt is made to assign an integer larger than 99 to a variable
declared NUMBER(2).
*Action: Change the data, how it is manipulated, or how it is declared so
that values do not violate constraints.
光标查询失败的地方是:
CURSOR cur_BPubpfRecordInsert1 (templateId VARCHAR2,userId VARCHAR2,moduleId VARCHAR2, parentFileName VARCHAR2,seqNextVal VARCHAR2,contextBankId VARCHAR2,
fileType varchar2,fileChkSum varchar2, msdStat char) IS
SELECT MSD.MSG_SRL_NUM,
FHD.HDR_SRL_NUM,CHECK_SUM,nvl(SUBSTR(MSG_DATA,INSTR(MSG_DATA, '<PayerAcctType>') + LENGTH('<PayerAcctType>'),
INSTR(MSG_DATA, '</PayerAcctType>') - (INSTR(MSG_DATA, '<PayerAcctType>') + LENGTH('<PayerAcctType>'))),' ')
AS ACCOUNT_TYPE, nvl(SUBSTR(MSG_DATA,INSTR(MSG_DATA, '<PayerAcctNum>') + LENGTH('<PayerAcctNum>'),
INSTR(MSG_DATA, '</PayerAcctNum>') - (INSTR(MSG_DATA, '<PayerAcctNum>') + LENGTH('<PayerAcctNum>'))),' ')
AS ENTITYID, ' ' BILLERSRVID,
nvl(SUBSTR(MSG_DATA,INSTR(MSG_DATA, '<PayerID>') + LENGTH('<PayerID>'),
INSTR(MSG_DATA, '</PayerID>') - (INSTR(MSG_DATA, '<PayerID>') + LENGTH('<PayerID>'))), ' ') AS docNum,
MSD.STATUS, FHD.STATUS FROM TBAADM.GD_FHD FHD,
TBAADM.GD_MSD MSD WHERE MSD.BATCH_HDR_SRL_NUM = FHD.HDR_SRL_NUM AND
MSD.FROM_TMPL_ID = FHD.FROM_TMPL_ID AND MSD.RCRE_USER_ID = FHD.RCRE_USER_ID
AND MSD.MODULE_ID = FHD.MODULE_ID AND IN_OUT_FILE_NAME = parentFileName
AND MSD.RCRE_USER_ID = userId AND MSD.FROM_TMPL_ID=templateId AND MSD.MODULE_ID = moduleId
AND FHD.FILE_TYPE = fileType AND FHD.CHECK_SUM = fileChkSum AND MSD.STATUS = msdStat;
失败的地方是:
MSD.FROM_TMPL_ID = FHD.FROM_TMPL_ID AND MSD.RCRE_USER_ID = FHD.RCRE_USER_ID
select查询返回以下内容:
MSG_SRL_NUM HDR_SRL_NUM CHECK_SUM ACCOUNT_TYPE ENTITYID BILLERSRVID DOCNUM STATUS STATUS
47699 B910000007YH 1078478272 R R
47700 B910000007YH 1078478272 R R
47701 B910000007YH 1078478272 R R
47702 B910000007YH 1078478272 R R
47703 B910000007YH 1078478272 R R
47704 B910000007YH 1078478272
我声明从光标获取值的变量是:
TYPE RecTyp IS RECORD (
lv_msdSrlNum varchar2(12) default null,
lv_fhdSrlNum varchar2(12) default null,
lv_chkSum VARCHAR2(40) default null,
lv_acctType varchar2(5) default null,
lv_acctNo varchar2(40) default null,
lv_billerSrvId varchar2(35) default null,
lv_docId varchar2(20) default null,
lv_msdStatus char(1) default null,
lv_fhdStatus char(1) default null
);
我无法理解为什么我的代码在该特定行中失败。
答案 0 :(得分:0)
这还不是答案,但也许是一个提示。以下查询为您返回什么内容?
C(u)