[오라클] 내장함수 REPLACE를 프로시저로 구현steemCreated with Sketch.

in #oracle7 years ago

간혹 재능판매 사이트에서 재능 판매를 하는데 요청 들어온 문제를 풀겸 만들어보았다. 세세한 디테일까지는 없고 간단하게 만든 프로시저...현실에서는 그냥 내장함수가 짱이다!

실제 REPLACE함수가 저렇게 돌진 않을 것이다. 더 정교하고 복잡할 것으로 예상하며 저건 짜집기? 같은 느낌이다.

create or replace PROCEDURE REPLACE_PROCEDURE
( 
  STR VARCHAR, --원본데이터
  STR1 VARCHAR, --변경플래그
  STR2 VARCHAR  -- 변경할 데이터
)
IS
 CVAR1 VARCHAR(200);
 CTEMP VARCHAR(200);
 CLOOP NUMBER;
 CRETURN VARCHAR(200);
BEGIN
    --SUBSTR을 사용하여 한글자씩 쪼갠후 비교하여 값이 같으면 변경 틀리면 그값을 그대로 씀
    CLOOP := 1;
    LOOP
      CTEMP := SUBSTR(STR, CLOOP, 1);
      IF CTEMP = STR1 THEN 
        CTEMP := STR2;
      ELSE 
        CTEMP := CTEMP;
      END IF;
      CRETURN := CONCAT(CRETURN, CTEMP);
      CLOOP := CLOOP+1;
      EXIT WHEN CLOOP > LENGTH(STR);
    END LOOP;
    
    dbms_output.put_line(CRETURN);
  
END REPLACE_PROCEDURE;