成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ORACLE 超長字符串問題的解決辦法

數據庫
這篇文章主要介紹了ORACLE 超長字符串問題的解決辦法,需要的朋友可以參考下前兩天我在工作中遇到這樣一個問題,我們有一個程序是用來增量抽取EBS 中的表數據的,有的是全量抽取,即先刪除原表中的數據,然后重新抽取數據。

       這篇文章主要介紹了ORACLE 超長字符串問題的解決辦法,需要的朋友可以參考下前兩天我在工作中遇到這樣一個問題,我們有一個程序是用來增量抽取EBS 中的表數據的,有的是全量抽取,即先刪除原表中的數據,然后重新抽取數據,示例代碼如下:

 

  1. truncate table ods_emp drop storage; 
  2.  insert into ods_emp select * from emp; 

 

  另外一種方式是增量抽取,用的是merge語句,這里就不寫了;)

  接觸過EBS庫存模塊的同志們知道,INV中的物料表是MTL_SYSTEM_ITEM_B,這個表的字段那叫一個多!我之前搞錯了,用的是***種方案提取的,這就會導致我的程序運行之后數據會大量減少(原因是臨時表只有一兩天的數據,大家懂得)。恰好這問題是在調試程序時出現的,并且不只是我負責的INV出現了問題,其他同事的模塊也有。于是項目經理怒了,發話:今天誰搞不完,加班!

  我可不想加班,趕緊把語句由INSERT寫成MERGE。寫完一運行,報錯:

  哦,原來是字符超長了。在這里我就不把之前的程序寫這里了,以免嚇到大家。我用下面的代碼來模擬這個錯誤吧:

 

  1. SQL> DECLARE 
  2.   v_str VARCHAR(); 
  3.   v_cnt NUMBER; 
  4.  BEGIN 
  5.   v_str := RPAD('select count(*) from emp',); 
  6.   EXECUTE IMMEDIATE v_str INTO v_cnt; 
  7.   dbms_output.put_line('v_cnt: '||v_cnt); 
  8.  END
  9.  / 
  10. DECLARE 

 

  第 1 行出現錯誤:

  ORA-06502: PL/SQL: 數字或值錯誤 : 字符串緩沖區太小

  ORA-06512: 在 line 5

  我想這還不好辦嘛,直接把varchar2改成long??墒沁€是報錯了:

  1. SQL> DECLARE 
  2.   v_str LONG; 
  3.   v_cnt NUMBER; 
  4.  BEGIN 
  5.   v_str := RPAD('select count(*) from emp',); 
  6.   EXECUTE IMMEDIATE v_str INTO v_cnt; 
  7.   dbms_output.put_line('v_cnt: '||v_cnt); 
  8.  END
  9.  / 
  10. DECLARE 

  第 1 行出現錯誤:

  ORA-06502: PL/SQL: 數字或值錯誤 : 字符串緩沖區太小

  ORA-06512: 在 line 5

  我之前在網上查的是LONG類型支持2G的大小,不知為啥,這次報錯了。平時由于工作的限制,很少接觸像LONG,LOB,CLOB等大數據類型,以后可得仔細研究下了。

  自己當時有點兒著急了,也想不出合適的辦法來,只能請教同事了。還真有一個同事遇到過,她把字符串變量定義成CLOB類型,具體請看代碼:

 

  1. DECLARE 
  2.  v_str CLOB; 
  3.  v_temp_str VARCHAR(); 
  4.  v_cnt NUMBER; 
  5.  BEGIN 
  6.  dbms_lob.createtemporary(v_str,true);--創建一個臨時lob 
  7.  v_temp_str := RPAD('select count(*) ',); 
  8.  dbms_lob.append(v_str,v_temp_str);--把臨時字符串付給v_str 
  9.  v_temp_str := RPAD('from emp ',); 
  10.  dbms_lob.append(v_str,v_temp_str);--把臨時字符串付給v_str 
  11.  EXECUTE IMMEDIATE v_str INTO v_cnt; 
  12.  dbms_output.put_line('v_cnt: '||v_cnt); 
  13.  dbms_lob.freetemporary(v_str);--釋放lob 
  14.  END

 

  運行結果:v_cnt: 14

  總結:1.用CLOB類型可以處理字符串超長的情況;

  2.ORACLE 的大數據類型還須研究。

責任編輯:honglu 來源: 腳本之家
相關推薦

2009-05-31 09:07:35

Oracle鎖定

2010-04-19 14:57:16

Oracle收縮表分區

2009-02-18 09:30:10

AJAX跨域XML

2010-05-04 13:52:00

Oracle用戶被鎖

2009-11-30 13:04:38

PHP獲取Oracle

2012-07-31 16:06:28

Linux內核編譯

2012-12-12 15:19:32

云安全

2011-10-28 10:56:24

jQTouchjQueryiPhone

2010-06-10 15:21:30

openSUSE聲音

2010-05-17 17:45:54

MySQL亂碼問題

2021-12-15 19:37:49

索引字符串字段

2009-11-30 12:58:04

PHP字符集編碼

2009-06-03 16:41:21

Eclipse亂碼Eclipse

2011-03-04 13:07:47

Filezilla

2011-05-12 13:34:57

SQL Server

2010-08-17 11:35:46

DIV CSS

2009-06-04 10:44:18

struts2 亂碼解決辦法

2010-03-04 16:49:44

2011-08-19 09:54:40

iPhone開發電子書字符串

2011-01-19 17:54:48

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美久久久久久久久中文字幕 | 国产久| 亚洲欧洲精品成人久久奇米网 | www.jizzjizz| 亚洲一区二区黄 | 精品人伦一区二区三区蜜桃网站 | 日批免费在线观看 | 国产精品特级毛片一区二区三区 | 91精品久久久久久久久久入口 | 久久久.com | 日韩成人影院在线观看 | 精品一区二区三区在线观看 | 亚洲一区二区电影在线观看 | 亚洲色在线视频 | 精久久久| 在线免费亚洲视频 | 国产亚洲欧美在线视频 | 亚洲国产一区在线 | 亚洲美女视频 | 成人欧美一区二区三区在线观看 | 日日日操 | 亚洲天堂中文字幕 | 国产精品视频免费看 | 国产精品久久久久久久久久免费看 | 亚洲欧美一区二区三区在线 | 久久国产美女视频 | 天天天操操操 | 精品国产精品国产偷麻豆 | 日韩一区二区在线视频 | 国产色婷婷精品综合在线播放 | 久久国产精品免费一区二区三区 | 91精品久久久久久久久 | 酒色成人网 | 久久精品亚洲一区 | 久久丝袜视频 | www久久| 天天久久 | 久草影视在线 | 国产高清视频在线观看 | av天天干 | 亚洲欧洲精品成人久久奇米网 |