티스토리 뷰

반응형

요즘 한창 오라클 공부중인데 숙제로 다음과 같은 문제를 풀었다.

문제) 소수 출력하기, 숫자를 전달받아 1부터 해당숫자 이내의 소수를 출력하라
SQL> EXEC SOSU(10)
소수: 2
소수: 3
소수: 5
소수: 7




다음은 내가 작성한 프로시져;;

-- 소수 판별 함수 정의
create or replace function is_prime(num in number)
    return number     -- 1: prime, 0: not prime
is
    v_limit number(3);
begin
    if num = 1 then
        return 0;
    elseif num = 2 then
        return 1;
    end if;

    v_limit := ceil(sqrt(num));
    for i in 2..v_limit loop
        if mod(num,i) = 0 then
            return 0;
        end if;
    end loop;
    return 1;
end;
/

-- 프로시져 정의
create or replace procedure sosu(p_num in number)
is
begin
    for i in 1..p_num loop
        if is_prime(i) = 1  then
             dbms_output.put_line('소수 : ' || i);
        end if;
    end loop;
end;
/

-- 실행
set serveroutput on
exec sosu(10)

열씨미 작성했는데, 계속 컴파일오류가 나는 것이다;
도대체 어디가 잘못된 것이었을까;;

혼자서 낑낑 무지 고생했다;;
오류메세지도 영~ 동문서답인거 같고;;;

심층분석해본 결과...


오라클의 PL/SQL에서는
if else 구문에서
elseif 가 아니라 elsif 를 쓰더군여ㅡㅡ;
아 놔;; OTL..

오라클..  'e' 는 왜 빼가지고 헤깔리게시리;;


혹시, 이렇게 elseif 대신 elsif 를 사용하는 언어가 또 있나요??

반응형
댓글