Oracle 检查 表记录中是否有乱码的 存储过程
HelloJin 同学说他们的OGG 同步的数据可能有乱码,要整个方法检测一下。 讨论了半天,没有找到什么好方法,只能每个表,每条记录的去做查询,然后进行比较。
判断的过程如下:
view plain
/* Formatted on 2011/10/11 10:45:33 (QP5 v5.163.1008.3004) */
CREATE OR REPLACE PROCEDURE lank_test (pv_tbname IN VARCHAR2,
pv_owner IN VARCHAR2)
IS
num NUMBER;
p_flag NUMBER;
p_flag2 NUMBER;
p_col VARCHAR2 (30);
p_str VARCHAR2 (1000);
p_tbname VARCHAR2 (30);
p_owner VARCHAR2 (30);
BEGIN
p_tbname := pv_tbname;
p_owner := pv_owner;
-- p_tbname:='LANK_F1';
-- p_owner:='SYS';
--dbms_output.put_line(p_tbname||p_owner);
SELECT COUNT (*)
INTO p_flag
FROM dba_tab_columns
WHERE table_name = p_tbname AND owner = p_owner;
-- dbms_output.put_line('Total:'||p_flag);
WHILE p_flag > 0
LOOP
SELECT column_name
INTO p_col
FROM dba_tab_columns
WHERE table_name = p_tbname AND COLUMN_ID = p_flag AND owner = p_owner;
-- dbms_output.put_line(p_str);
EXECUTE IMMEDIATE
'select count(*) from '
|| p_owner
|| '.'
|| p_tbname
|| ' where asciistr('
|| p_col
|| ') like ''%??%'' or asciistr('
|| p_col
|| ') like ''%\FFFD%'' '
INTO p_flag2;
IF p_flag2 > 0
THEN
DBMS_OUTPUT.put_line (
p_owner || '.' || p_tbname || ' Have:' || p_flag || ',' || p_col);
INSERT INTO resout
VALUES (p_owner,
&n
相关新闻>>
- 发表评论
-
- 最新评论 进入详细评论页>>