티스토리 뷰
반응형
요즘 한창 오라클 공부중인데 숙제로 다음과 같은 문제를 풀었다.
문제) 소수 출력하기, 숫자를 전달받아 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)
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 를 사용하는 언어가 또 있나요??
반응형
댓글