Oracle查看表中是否有中文字符

--查看表中是否有中文字符
DECLARE  
  V_SQL CLOB;  
  TYPE T_TABLE_ARRAY IS VARRAY(50) OF VARCHAR(50);  
  TABLES   T_TABLE_ARRAY := T_TABLE_ARRAY('table_name');  
  V_OWNER  VARCHAR2(30) := 'schema'; --
  V_RESULT INTEGER;  
BEGIN  
  FOR I IN 1 .. TABLES.COUNT LOOP  
    SELECT 'SELECT COUNT(*) FROM ' || V_OWNER || '.' || UPPER(TABLES(I)) ||  
           CHR(10) || ' WHERE ROWNUM<10 AND (' || TRIM_COLUMN_NAME || ')'  
      INTO V_SQL  
      
      FROM (SELECT REPLACE(APP_COMPASS.F_LINK(TRIM_COLUMN_NAME), ',', ' OR ') TRIM_COLUMN_NAME  
              FROM (SELECT 'ASCIISTR(' || COL.COLUMN_NAME ||  
                           ') LIKE ''%\%'' ' TRIM_COLUMN_NAME  
                      FROM ALL_TAB_COLUMNS COL  
                     WHERE COL.OWNER = V_OWNER  
                       AND COL.TABLE_NAME = UPPER(TABLES(I))  
                       AND (COL.DATA_TYPE LIKE '%CHAR%' OR  
                           COL.DATA_TYPE LIKE '%CLOB%')  
                     ORDER BY COL.COLUMN_ID
					 ));  
    
    EXECUTE IMMEDIATE V_SQL  
      INTO V_RESULT;  
        
    DBMS_OUTPUT.PUT_LINE(TABLES(I)||' chinese count result is: '|| V_RESULT);  
      
    IF V_RESULT > 0 THEN  
      SELECT REPLACE(REPLACE(V_SQL, 'COUNT(*)', '*'),'ROWNUM<10 AND','') INTO V_SQL FROM DUAL;  
      DBMS_OUTPUT.PUT_LINE(V_SQL || ';');  
    END IF;  
  END LOOP;  
  
END;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值