CREATE OR REPLACE PROCEDURE p_ant_series(v_first NUMBER)
IS
-- 변수선언
sStr VARCHAR2(100); -- 이전행 값
sTmp VARCHAR2(1); -- 임시변수
sRtn VARCHAR2(100); -- 출력번수
nLen NUMBER(3) := 0; -- 이전행 길이
nCnt NUMBER(3) := 0; -- 연속숫자 카운트
BEGIN
-- 입력값 변수할당 및 출력 처리
sStr := v_first;
nLen := LENGTH(sStr);
sTmp := SUBSTR(sStr,1,1);
dbms_output.put_line(sStr);
-- 10번 반복
FOR k IN 1 .. 10 LOOP
-- 숫자세기 작업 시작
FOR i IN 1 .. nLen LOOP
-- 연속된 숫자일경우 카운트 증가
IF sTmp = SUBSTR(sStr,i,1) THEN
nCnt := nCnt + 1;
-- 물연속 숫자일경우 출력변수 값 셋팅
ELSE
sRtn := sRtn || sTmp || nCnt;
nCnt := 1;
sTmp := SUBSTR(sStr,i,1);
END IF;
END LOOP;
-- 마지막 출력변수 셋팅
sRtn := sRtn || sTmp || nCnt;
-- 출력
dbms_output.put_line(sRtn);
-- 다음행 계산을 위해 출력변수를 이전행값 변수에 저장
sStr := sRtn;
sTmp := SUBSTR(sStr,1,1);
sRtn := '';
nLen := LENGTH(sStr);
nCnt := 0;
END LOOP;
END;