电话号码处理,附错误类型(无效字符,plsql该sql中不允许使用函数)
来源:互联网 发布:caxa画图软件 编辑:程序博客网 时间:2024/06/14 04:08
--电话号码处理
PROCEDURE PRO_DM_MOBILE_SZKF(OUT_CODEOUT VARCHAR2(4000),OUT_MSGOUT VARCHAR2(4000))IS
S_SQL VARCHAR2(4000);
T_SQL VARCHAR2(4000);
BEGIN
UPDATE C_RESIDENTCUSTOMER A SET A.TEL1=TRIM(REGEXP_SUBSTR(A.TEL||','||A.MOBILEPHONE,'[^,]+', 1, 1)),
A.TEL2=TRIM(REGEXP_SUBSTR(A.TEL||','||A.MOBILEPHONE,'[^,]+', 1, 2)),
A.TEL3=TRIM(REGEXP_SUBSTR(A.TEL||','||A.MOBILEPHONE,'[^,]+', 1, 3)),
A.TEL4=TRIM(REGEXP_SUBSTR(A.TEL||','||A.MOBILEPHONE,'[^,]+', 1, 4)),
A.TEL5=TRIM(REGEXP_SUBSTR(A.TEL||','||A.MOBILEPHONE,'[^,]+', 1, 5)),
A.TEL6=TRIM(REGEXP_SUBSTR(A.TEL||','||A.MOBILEPHONE,'[^,]+', 1, 6)),
A.TEL7=TRIM(REGEXP_SUBSTR(A.TEL||','||A.MOBILEPHONE,'[^,]+', 1, 7)),
A.TEL8=TRIM(REGEXP_SUBSTR(A.TEL||','||A.MOBILEPHONE,'[^,]+', 1, 8)),
A.TEL9=TRIM(REGEXP_SUBSTR(A.TEL||','||A.MOBILEPHONE,'[^,]+', 1, 9)),
A.TEL10=TRIM(REGEXP_SUBSTR(A.TEL||','||A.MOBILEPHONE,'[^,]+', 1, 10)),
A.TEL11=TRIM(REGEXP_SUBSTR(A.TEL||','||A.MOBILEPHONE,'[^,]+', 1, 11)),
A.TEL12=TRIM(REGEXP_SUBSTR(A.TEL||','||A.MOBILEPHONE,'[^,]+', 1, 12)),
A.TEL13=TRIM(REGEXP_SUBSTR(A.TEL||','||A.MOBILEPHONE,'[^,]+', 1, 13)),
A.TEL14=TRIM(REGEXP_SUBSTR(A.TEL||','||A.MOBILEPHONE,'[^,]+', 1, 14)),
A.TEL15=TRIM(REGEXP_SUBSTR(A.TEL||','||A.MOBILEPHONE,'[^,]+', 1, 15));
COMMIT;
--筛选移动电话
UPDATE C_RESIDENTCUSTOMER SET 移动电话 = NULL;
FOR I IN 1 .. 15LOOP
S_SQL := 'UPDATE C_RESIDENTCUSTOMER SET 移动电话=DECODE(IS_MOBILE(TEL'|| I ||
'),1,TEL' || I || ',NULL) WHERE移动电话 IS NULL';
/*
DBMS_OUTPUT.PUT_LINE(S_SQL);
*/
EXECUTE IMMEDIATE S_SQL;
END LOOP;
COMMIT;
--去除和移动电话相同的tel字段,去除字段长度小于等于1的电话号码
FOR I IN 1 .. 15LOOP
S_SQL := 'UPDATE C_RESIDENTCUSTOMER SETTEL' || I || '=NULL WHERE TEL' || I ||
'=移动电话 AND TEL'|| I || ' IS NOT NULL';
/*
DBMS_OUTPUT.PUT_LINE(S_SQL);
*/
T_SQL:='UPDATE C_RESIDENTCUSTOMER SETTEL'||I||'=NULL WHERE LENGTH(TEL'||I||')
<=1';
EXECUTE IMMEDIATE S_SQL;
EXECUTE IMMEDIATE T_SQL;
END LOOP;
COMMIT;
--移动有内容行到优先字段
FOR I IN 1 .. 14LOOP
S_SQL := 'UPDATE C_RESIDENTCUSTOMER SETTEL' || TO_CHAR(I)|| '=TEL' ||
TO_CHAR(I + 1) || ',TEL' || TO_CHAR(I+ 1)||
'=NULL WHERE TEL' || TO_CHAR(I)|| ' IS NULL AND TEL'||
TO_CHAR(I + 1) || ' IS NOT NULL';
EXECUTE IMMEDIATE S_SQL;
END LOOP;
COMMIT;
FOR I IN 14 .. 1LOOP
S_SQL := 'UPDATE C_RESIDENTCUSTOMER SETTEL' || TO_CHAR(I)|| '=TEL' ||
TO_CHAR(I + 1) || ',TEL' || TO_CHAR(I+ 1)||
'=NULL WHERE TEL' || TO_CHAR(I)|| ' IS NULL AND TEL'||
TO_CHAR(I + 1) || ' IS NOT NULL';
EXECUTE IMMEDIATE S_SQL;
END LOOP;
COMMIT;
END PRO_DM_MOBILE_SZKF;
错误类型1,无效字符
DECLARE
S_SQL VARCHAR2(4000);
BEGIN
S_SQL := 'DELETE FROM t;';
EXECUTE IMMEDIATE S_SQL;
END;
拼接的语句中不可带有分号
;号作为sql语句结束符只在sqlplus中有用,在plsql中必须去掉。
错误类型2,
错误:PLS-00231: 函数'IS_MOBILE' 不能在 SQL 中使用
行:887
文本:WHEN IS_MOBILE(TRIM(A.MOBILEPHONE)) =1 THEN
在包中使用函数需要在包头中有声明。- 电话号码处理,附错误类型(无效字符,plsql该sql中不允许使用函数)
- [错误]不允许使用不完整的类型
- 不允许启动新事务,因为有其他线程正在该会话中运行(ef并发错误处理之一)
- 【MFC BUG】error C3872: 此字符不允许在标识符中使用错误的解决办法
- error C3872: “0x3000”: 此字符不允许在标识符中使用错误 的解决办法
- plsql中&字符的应用以及处理
- C++中类定义时不允许使用不完整的类型错误提示原因分析
- 该如何处理弹出“密码长度无效”错误
- .net xml中无效字符处理
- 使用PL/SQL进行模糊查询时显示错误ORA-00911:无效字符
- C++错误:不允许使用不完整的类型
- PLSQL-转义字符&处理
- PLSQL中的&字符处理
- Qt5事件处理机制:“函数样式转换”:位于“.”运算符右边时非法/不允许使用此类型名
- PLSQL与SQL配合使用(DML增删该查)
- 网上粘贴一段代码后程序出现错误:error C3872: "0xa0": 此字符不允许在标识符中使用
- Virtual COM port 该设备的驱动程序未被安装:INF中服务安装段落无效错误的处理办法
- Exception:java.sql.SQLException: 持续时间对该函数无效
- 项目之RFID天线设计1
- linux学习笔记-2:第一个问题
- sql中的text字段如何导入oracle
- Android图片压缩及内存缓存
- 同时使用jsp与thyme leaf
- 电话号码处理,附错误类型(无效字符,plsql该sql中不允许使用函数)
- linux无法进行伪密码登陆
- 百钱买百鸡
- OSI七层
- Git操作
- u-boot分析 四 (程序入口start.S)
- 编写c#程序,输出平均分和高于平均分的同学
- HDU 2857 Mirror and Light [计算几何]
- Nginx的安装,启动,停止,日志分割,从容停止,平滑升级