--将当前用户下的所有表中字符串“NULL”,替换为NULL
CREATE OR REPLACE PROCEDURE REPLACE_UNLL
AUTHID DEFINER
AS
v_count NUMBER;
v_exception_flag NUMBER;
BEGIN
FOR t IN (SELECT table_name, column_name
FROM user_tab_columns
WHERE data_type = 'VARCHAR2') LOOP
-- 初始化异常标志为0,表示没有异常
v_exception_flag := 0;
BEGIN
-- 执行动态SQL查询,并将结果存储在v_count变量中
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM "' || t.table_name || '" WHERE "' || t."column_name" || '" = ''NULL''' INTO v_count;
-- 判断v_count是否等于0,如果不等于0则执行更新
IF v_count != 0 THEN
EXECUTE IMMEDIATE 'UPDATE "' || t.table_name || '" SET "' || t.column_name || '" = NULL WHERE "' || t."column_name" || '" = ''NULL''';
END IF;
EXCEPTION
WHEN OTHERS THEN
-- 捕获异常,设置异常标志为1
v_exception_flag := 1;
PRINT '出现错误的语句: ' || 'UPDATE "' || t.table_name || '" SET "' || t.column_name || '" = NULL WHERE "' || t."column_name" || '" = ''NULL''' ||' 错误信息: ' || SQLERRM;
END;
-- 如果异常标志为0(没有异常),继续下一次循环;否则,跳过本次循环
IF v_exception_flag = 0 THEN
CONTINUE; -- 继续下一次循环
END IF;
END LOOP;
END;
oracle导入达梦数据库后,处理NULL值变成字符串问题
最新推荐文章于 2024-07-09 11:22:10 发布