비슷한 맥락으로 내장함수 UPPER를 구현한 것으로
입력받은 문자열을 SUBSTR해서 아스키코드 값으로 변경후 아스키코드값에서 값을 더해 UPPER시킨다. 이것 또한 내장함수가 짱이다..
create or replace PROCEDURE UPPER_PROCEDURE
(
STR VARCHAR
)
IS
CTEMP VARCHAR(200);
CRETURN VARCHAR(200);
BEGIN
--스트링을 받아 쪼갠후 아스키코드 값이 97 ~ 122이면(소문자범위) 대문자로 변경(-32)
FOR i IN 1..LENGTH(STR)
LOOP
CTEMP := SUBSTR(STR, I, 1);
IF ASCII(CTEMP) BETWEEN 97 AND 122 THEN CTEMP := CHR(ASCII(CTEMP) - 32);
END IF;
CRETURN := CONCAT(CRETURN, CTEMP);
END LOOP;
dbms_output.put_line(CRETURN);
END UPPER_PROCEDURE;