학원/DB(오라클),SQL문

10/19 24-1 [PL/SQL] IF문

도원결의 2022. 10. 19. 17:58

IF문

자바랑 비슷 하지만 문법도 조금씩 다르니 잘 확인하자!!

 

IF문 기본형식  (기본틀 만들어 놓고 시작하는게 편함!) 

DECLARE   --- 변수 선언 부! 오라클은 특이한게 변수 선언 부가 따로 있어서 거기서 변수 선언 해야 함! BEGIN 에서 시작하면 에러난다~~

 

BEGIN             -----요기 안에서 명령문을 작성 해야 함

        IF   조건   THEN

               참이면 실행 할 명령문들  ;

        ELSE

                아니면 다른 거 실행 할 명령문2 ;

       END IF;                  ---또 특이한게 오라클은 IF 문 쓰면 마지막에 요걸 꼭 써줘야 한다! ; 이거도 잊지 말고!!

END;

/


[홀수/짝수 구분하기]

우선 시작 전 

SET SERVEROUT ON 선언 하고 시작!!

 

VAR RT VARCHAR2(10)
SET SERVEROUT ON
DECLARE 
        num NUMBER := 10;
BEGIN
        IF MOD(NUM,2) = 0 THEN          --- 오라클은 %연산이 없기 때문에 함수 MOD(,)를 써야한다!!
                :RT :='EVEN';
                DBMS_OUTPUT.PUT_LINE('짝수');       
        ELSE
                  :RT :='ODD';
                DBMS_OUTPUT.PUT_LINE('홀수');
        END IF;                 
END;
/
PRINT RT  -- 출력

 

[홀짝 구분 -- 사용자 입력 받아보기]

ACCEPT NUM PROMPT '숫자를 입력하세요?'   ---> 요거 자바에서 SACANNER 같은거! 사용자 입력 받기위한 명령어!

DECLARE

           num NUMBER := &num ;           

                               ---> 변수 num 이랑 구분하기 위해서 사용자받은거는 &를 써서 구분! 자바에서 this와 같은 역할이다

BEGIN

          if mod(num,2) = 0 then

                   DBMS_OUTPUT.PUT_LINE('Input Number is'|| num);

          else
                DBMS_OUTPUT.PUT_LINE(num ||"is EVEN"); 
          end if ;
                DBMS_OUTPUT.PUT_LINE(num ||"is ODD");  

END;

/


[국영수 점수 받아서 총점과 평균 학점 구하기 ]


ACCEPT kor PROMPT '국어 점수 입력?'
ACCEPT eng PROMPT '영어 점수 입력?'
ACCEPT math PROMPT '수학 점수 입력?'
DECLARE
              kor NUMBER(3) := &kor;
              eng NUMBER(3) := ŋ
              math NUMBER(3);            문제)math는 실행부에서 초기화 하라   
              total NUMBER(3);             문제) 총합을 저장하는 변수와 평균을 저장하는 변수 선언
              avgg NUMBER(5,2);                            
BEGIN      
                   문제) 90점 이상이면 a학점 출력.... b,c,d,f 학점까지 출력!
              math := &math ;
              total := kor+eng+math;
              avgg  := total/3;      
          if   avgg >= 90 then
                  DBMS_output.put_line('A score');
       elsif   avgg >= 80 then
                  DBMS_output.put_line('B score');
       elsif   avgg >= 70 then
                  DBMS_output.put_line('C score');
       elsif avgg >= 60 then
                 DBMS_output.put_line('D score');

       else 

                 DBMS_output.put_line('F score');
       end if;      
END;
/


하기전에!! 아 이거 쓰임을 이제 제대로 깨달았으!!

 

오라클에서도 걍 연산같은거 출력 해보고 싶을 때

SELECT 100/3 from dual;    --- 이렇게 활용 가능!!!!!

 

[if문으로 배수/공배수 구분하기]


ACCEPT num PROMPT '숫자를 입력하세요?'
BEGIN
       if  mod(&num,15)=0 then
               DBMS_output.put_line('3과5의 공배수');
    elsif mod(&num,5)=0 then
               DBMS_output.put_line('5의배수');
    elsif mod(&num,3)=0  then
              DBMS_output.put_line('3의배수');
    elsif 
              DBMS_output.put_line('3과5의 배수가 아니다');
    end if ;
END;
/