요즘 한창 오라클 공부중인데 숙제로 다음과 같은 문제를 풀었다.
문제) 소수 출력하기, 숫자를 전달받아 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 를 사용하는 언어가 또 있나요??
'Computer > 참조자료' 카테고리의 다른 글
| Windows XP 에서 한글입력을 한/영 키에서 Shift+Space 로 사용하기 (2) | 2008/03/25 |
|---|---|
| 프로그래머랑 친한 숫자들 (2) | 2008/03/25 |
| [오라클] PL/SQL 작성할 때 주의할 것 중 한가지^^/ (4) | 2008/03/18 |
| Mac의 화면캡쳐 기능 그리고 Windows와 구별되는 Mac의 좋은점 (14) | 2008/02/07 |
| 에디트플러스 & 울트라에디트 : 현재시간 입력하는 단축키 (1) | 2007/12/17 |
| CurrPorts : 개방포트 확인 유틸리티 (0) | 2007/11/22 |







오라클은 아직 몰라서 패스!~ㅋㅋ
왠지 오라클 하시는 분은 멋져보여요 ㅋㅋ
오라클은 나도 잘 몰라요ㅋ 너무 광대하다는;;;
하튼, 새로운 문법구조를 만날 때마다 참 기분이 새롭와요^^*
하악, 답방왔는데 이런 포스트가.. -┎)
아~ 이거;, 그런 포스트 아닌데^^;;