Oracle×Ö·û´®³¤¶ÈµÄÎÊÌâ
½ñÌìÅöµ½Ò»¸öÎÊÌ⣬ͨ¹ýÒ»¸öSQLÓï¾ä²éѯʱ£¬³öÈçÏÂÎÊÌ⣺
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at "WMSYS.WM_CONCAT_IMPL", line 30
ÎÊÌâ³öÏÖÔÚͨ¹ýWMSYS.WM_CONCAT_IMPLº¯ÊýÖØÐÂ×é×°×Ö·û´®µÄʱºò£¬×é×°µÄ´®¹ý³¤£¬varchar2ÀàÐ͵ÄÊý¾ÝÀàÐÍ×î´óΪ4000¸ö×Ö½Ú£¬ÔÚPL/SQLÖÐ×î´óΪ32767£¬ÔÒò¾ÍÔÚÕâWMSYS.WM_CONCAT_IMPL×é×°µÄÕâ¸ö×Ö·û´®³¤¶ÈΪ18031£¬ÔÚschema¼¶ÏÂvarchar2×î´óÊÇ4000£¬³¬¹ý×î´ó³¤¶È£¬±¨´í¡£(¼ÇϸÃÎÊÌ⣬³¤¼ÇÐÔ~)
ÒÔÏÂÄÚÈÝÎª×ªÔØ£¬url£ºhttp://www.blogjava.net/wangbing/archive/2010/03/15/315482.html
¹ØÓÚ varchar2 µÄ×î´ó³¤¶È
varchar2ÓÐÁ½¸ö×î´ó³¤¶È£ºÒ»¸öÊÇÔÚ×Ö¶ÎÀàÐÍ4000£»Ò»¸öÊÇÔÚPL/SQLÖбäÁ¿ÀàÐÍ32767¡£½ñÌì·¸ÁËÒ»¸öС´íÎ󣬾ÍÊǺ¯ÊýµÄvarchar2ÀàÐ͵ķµ»ØÖµ³¤¶ÈÒ²ÊÇ4000£¬¶ø²»ÊÇÎÒÒÔΪµÄ32767¡£
ÏëÁËһϣ¬ÕâÊÇÒ»¸ö±È½ÏÈÝÒ׳ö´íµÄµØ·½¡£ÒòΪÔÚº¯ÊýÖÐÎÒ¿ÉÒÔÉùÃ÷³¤¶È³¬¹ý4000µÄ×Ö·û´®±äÁ¿£¬²¢ÇÒ½«Ëü×÷Ϊ·µ»ØÖµ£¬ÕâÀïÊDz»»áÌáʾ±àÒë´íÎóµÄ¡£Õâ¸öº¯Êýƽʱ¶¼¿ÉÒÔÕý³£Ö´ÐУ¬¶øÒ»µ©Õâ¸ö×Ö·û´®³¤¶È³¬¹ý4000£¬º¯ÊýÖ´Ðоͻá³ö´í¡£ËùÒÔÕâ¸öÎÊÌâËäÈ»±È½Ï¼òµ¥£¬ÈÔÈ»¼Ç¼һÏ¡£
C:\Documents and Settings\yuechao.tianyc>sqlplus
SQL*Plus: Release 10.2.0.1.0 - Production on ÐÇÆÚ¶þ 5ÔÂ 5 17:15:59 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
ÇëÊäÈëÓû§Ãû: test/test
Á¬½Óµ½:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> create or replace function funny return varchar2
2 is
3 v_yct varchar2(32767);
4 begin
5 v_yct := rpad('a', 4001, 'b');
6 &
Ïà¹ØÎĵµ£º
ÔÚ´´½¨Êý¾Ý¿âʱ£¬SPFileÎļþÖв¿·Ö±ØÐ뿼ÂǵIJÎÊýÖµ£º
¡¡¡¡»ù±¾¹æÔò
¡¡¡¡a.ÔÚSPFileÎļþÖУ¬ËùÓвÎÊý¶¼ÊÇ¿ÉÑ¡µÄ£¬Ò²¾ÍÊÇ˵ֻÐèÒªÔÚ³õʼ»¯²ÎÊýÎļþÖÐÁгöÄÇЩÐèÒªÐ޸ĵIJÎÊý£¬ÆäËü±£³ÖĬÈÏÖµ¼´¿É¡£
¡¡¡¡b.SPFileÎļþÖÐÖ»Äܰüº¬²ÎÊý¸³ÖµÓï¾äºÍ×¢ÊÍÓï¾ä¡£×¢ÊÍÓï¾äÒÔ“#”·ûºÏ¿ªÍ·£¬Êǵ¥ÐÐ×¢ÊÍ¡£
¡¡¡¡c.SPFileÎÄ ......
Q£ºÎҵıíÖÐÓÐÒ»¸ö×Ö¶ÎÊÇvarchar2(4000) £¬ÆäÖд洢Á˲»ÉÙÖÐÎÄ£¬ÏÖÔÚÓÉÓÚÅŰæÐèÒª£¬ÎÒÏëÕÒ³öº¬Óлسµ·ûµÄ¼Ç¼ɾ³ý»Ø³µ·û£¬ÇëÎʸßÊÖSQLÓï·¨Ôõôд£¿
A£ºOracleÖлسµ·ûÊÇchr(10),¿ÉÒÔʹÓú¯Êýreplace(×Ö¶Î,chr(10),'')
È磺 update x set a=replace(a,chr(10),'')¡£
º¯Êý£º
1.CHR
¸ø³öÕûÊ ......
Òª´´½¨Á½¸öÎļþ
1: runBatch.bat
2: sql.txt
runBatch.bat ÄÚÈÝÈçÏ£º
sqlplus username/password @sql.txt
pause
sql.txtÄÚÈÝÈçÏ£º
spool sql.log
create table t1(cname char(20));
insert into t1(cname) values('test');
select * from t1;
spool off
exit
Ë«»÷runBatch.bat¾Í¿ÉÒÔÅúÁ¿Ö´ÐÐsql.txtÖÐ ......
ÓÃjavaµ÷ÓÃoracle´æ´¢¹ý³Ì×ܽá
1¡¢Ê²Ã´ÊÇ´æ´¢¹ý³Ì¡£´æ´¢¹ý³ÌÊÇÊý¾Ý¿â·þÎñÆ÷¶ËµÄÒ»¶Î³ÌÐò£¬ËüÓÐÁ½ÖÖÀàÐÍ¡£Ò»ÖÖÀàËÆÓÚSELECT²éѯ£¬ÓÃÓÚ¼ìË÷Êý¾Ý£¬¼ìË÷µ½µÄÊý¾ÝÄܹ»ÒÔÊý¾Ý¼¯µÄÐÎʽ·µ»Ø¸ø¿Í»§¡£ÁíÒ»ÖÖÀàËÆÓÚINSERT»òDELETE²éѯ£¬Ëü²»·µ»ØÊý¾Ý£¬Ö»ÊÇÖ´ÐÐÒ»¸ö¶¯×÷¡£ÓеķþÎñÆ÷ÔÊÐíͬһ¸ö´æ´¢¹ý³Ì¼È¿ÉÒÔ·µ»ØÊý¾ÝÓÖ¿ÉÒÔÖ´Ðж¯×÷¡£
......