oracle+行溢出_行连接,oracle - ORA-06512:精确获取返回的行数超过了请求的行数 - 堆栈内存溢出...

在运行以下过程时,出现以下错误

Error report:

ORA-01422: exact fetch returns more than requested number of rows

ORA-06512: at "my_db.CREATE_CTAB_FILE", line 51

ORA-06512: at line 2

01422. 00000 - "exact fetch returns more than requested number of rows"

*Cause: The number specified in exact fetch is less than the rows returned.

*Action: Rewrite the query or change number of rows requested

您能否建议我如何将获取的数据分配给变量? 我怀疑数据类型为varchar2的变量(Inbuf)不接受select语句获取的行。 请帮助我解决此错误

create or replace

PROCEDURE CREATE_CTAB_FILE (f_ctab_id IN T_WN_CTAB_str.wn_ctab_id%type,

P_SYN_DIR in varchar2,

p_user IN varchar2)

is

FILEHANDLER WN_DB_UTL_FILE.FILE_TYPE;

LNBUF varchar2(4000) := null;

--cast(lnbuf as char(4000));

--LNBUF clob;

v_file varchar2(256);

V_DATA_LOG varchar2(256);

V_WN_COUNTRY T_WN_CTAB_STR.WN_COUNTRY%type;

V_H_L varchar2(256);

BEGIN

for CTAB_REC in

(select distinct WN_COUNTRY, WN_PRHB_DATE

from t_wn_ctab_h

where wn_ctab_id =f_ctab_id)

loop

v_wn_country:=ctab_rec.wn_country;

--bkk_solution.wn_insert_res_log('create_ctab', NULL, NULL, help_rec.wn_cty, help_rec.wn_vers_sol, 'START', p_cty);

v_file:=v_wn_country||'_CTAB'||'.txt';

fileHandler := WN_DB_UTL_FILE.FOPEN(P_SYN_DIR,V_FILE,'W');

--p_file_id := fileHandler.id;

lnbuf := ('#' || rpad(' ',42,' ') ||'V3.4.5'||rpad(' ',197,' ') || '000000000000000000000000000'||to_char(sysdate,'YYYYMMDD')|| to_char(ctab_rec.WN_PRHB_DATE,'YYYYMMDD') ||rpad(' ',48,' ')|| '1'); -- '' -Tag ausgeben

WN_DB_UTL_FILE.PUTF(fileHandler, lnbuf);

Loop

LNBUF := NULL ;

SELECT ( CAST ('LT01' AS CHAR (8))

|| CAST (REC.WN_COUNTRY AS CHAR (3))

|| CAST (rec.WN_NORMSSNR_WW AS CHAR (32))

|| CAST (REC.WN_SOFTWARE AS CHAR (7))

|| CAST (REC.WN_NORMSSNR AS CHAR (32))

|| RPAD (' ', 32, ' ')

|| CAST (REC.WN_NAME_WW AS CHAR (16))

|| CAST (REC.WN_NAME AS CHAR (16))

|| CAST (REC.WN_NORMBYTE AS CHAR (6))

|| CAST ('0' AS CHAR (3))

|| CAST ('ST' AS CHAR (2))

|| RPAD (' ', 70, ' ')

|| CAST ('ST' AS CHAR (3))

|| RPAD (' ', 60, ' ')

|| TO_CHAR (rec.WN_FOD, 'YYYYMMDD')

|| TO_CHAR (rec.WN_LOD, 'YYYYMMDD'))

INTO lnbuf

FROM t_wn_ctab_str rec

WHERE rec.wn_ctab_id = 1234;

WN_DB_UTL_FILE.PUTF(fileHandler, lnbuf);

end LOOP;

WN_DB_UTL_FILE.FCLOSE(fileHandler);

end LOOP;

END CREATE_CTAB_FILE ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值