亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2385 | 回復(fù): 0
打印 上一主題 下一主題

[求助] ora_sql_txt函數(shù) 內(nèi)容有中文 可能會出現(xiàn)亂碼 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2015-05-14 13:38 |只看該作者 |倒序瀏覽
通過觸發(fā)器 獲取 DDL語句,如果獲取的內(nèi)容中包含中文,就會導(dǎo)致 出現(xiàn)亂碼,示例如下:
  1. ---- 存儲DDL語句的表
  2. create table sys.test_audit_ddl
  3. (opertime date,
  4. operation varchar2(30),
  5. object_type varchar2(30),
  6. object_name varchar2(30),
  7. sql_stmt varchar2(4000)
  8. );

  9. ---- 捕獲DDL語句的觸發(fā)器
  10. create or replace trigger sys.test_trg_audit_ddl
  11. before ddl on database
  12. declare
  13. pragma autonomous_transaction;
  14. n number;
  15. stmt varchar2(4000) :=null;
  16. sql_text ora_name_list_t;
  17. begin

  18. n := ora_sql_txt(sql_text);
  19. for i in 1..n loop
  20. stmt := stmt || sql_text(i);
  21. end loop;

  22. insert into sys.test_audit_ddl
  23. (
  24. opertime,operation,
  25. object_type,object_name,sql_stmt
  26. )
  27. values(
  28. sysdate,
  29. ora_sysevent,
  30. ora_dict_obj_type,
  31. ora_dict_obj_name,
  32. stmt
  33. );
  34. commit;
  35. end;
  36. /

  37. ---- 測試DDL捕獲亂碼的情形
  38. create or replace procedure test_proc as
  39. begin
  40. -- 這是一個測試中文DDL是否亂碼的例子
  41. dbms_output.put_line('這是一個測試中文DDL是否亂碼的過程');
  42. end;
  43. /

  44. create or replace procedure test_proc as
  45. begin
  46. --------------- 這是一個測試中文DDL是否亂碼的例子
  47. dbms_output.put_line('這是一個測試中文DDL是否亂碼的過程');
  48. end;
  49. /
復(fù)制代碼
結(jié)果如下:
  1. 14:36:11 SQL> select * from sys.test_audit_ddl;

  2. OPERTIME OPERATION OBJECT_TYPE
  3. ------------------- ------------------------------ ------------------------------
  4. OBJECT_NAME
  5. ----------------------------------------
  6. SQL_STMT
  7. ---------------------------------------------------------------------------------------------------
  8. 2012-06-26 14:36:02 CREATE PROCEDURE
  9. TEST_PROC
  10. create or replace procedure test_proc as
  11. begin
  12. -- 這是一個測試中文DDL是否亂碼的例子
  13. dbms_output.put_line('這是一個測試中文DDL是否亂碼的過程');
  14. end;

  15. 2012-06-26 14:36:11 CREATE PROCEDURE
  16. TEST_PROC
  17. create or replace procedure test_proc as
  18. begin
  19. --------------- 這是一個測試中文DDL是否亂碼的例子
  20. dbms_output.put_line('這是桓霾饈災(zāi)形腄DL是否亂碼的過程');
  21. end;
復(fù)制代碼
以上示例代碼是從其他帖子 復(fù)制來的,不過和我遇到的問題是一摸一樣的,自己也進(jìn)行了驗證,故就直接采用了。
(沒有權(quán)限寫URL地址,故沒有貼出)

數(shù)據(jù)庫版本:10.2.0.5

我的想法是 中文是占2個字符的,而在 dbms_standard.ora_name_list_t 這個函數(shù)將  獲取的 內(nèi)容 進(jìn)行分割的時候,將一個中文給分割了,就導(dǎo)致分割之后的中文內(nèi)容全部是亂碼,
不知道有沒有辦法解決呢??
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP