注:使用的工具为PLSQL Developer
壹、while简单使用(替换字符串中的字符,和REPLACE效果一样)
注: 这里没有使用REPLACE函数
1、建立存储过程
CREATE OR REPLACE PROCEDURE pro_testcom (p_string IN VARCHAR2, replace1 IN VARCHAR2, replace2 IN VARCHAR2) IS p_start NUMBER := 1;-- 从哪个位置开始截取 p_subLength NUMBER := 1;-- 需要截取多长 p_string_length NUMBER := length(p_string);-- 获取需要截取的字符串的长度 p_new_string VARCHAR2(2014) := '';--存储拼接新的字符串 BEGIN WHILE(p_start < p_string_length + 1) LOOP p_subLength := INSTR(p_string, replace1, p_start); IF p_subLength = 0 THEN p_subLength := p_string_length + 1; END IF ; IF p_new_string IS NULL THEN p_new_string := SUBSTR(p_string , p_start , p_subLength - p_start); ELSE p_new_string := p_new_string||replace2||SUBSTR(p_string , p_start , p_subLength - p_start); END IF; p_start := p_subLength + 1; END LOOP; -- 打印结果 DBMS_OUTPUT.PUT_LINE('替换之后的字符串为:'||p_new_string); END pro_testcom;
2、执行存储过程(命令窗口中执行)
-- 打开日志输出 set serveroutput on; exec pro_testcom('555.555.555.555' , '.' ,'-');
3、执行结果
替换之后的字符串为:555-555-555-555 PL/SQL procedure successfully completed