Q.

[SQL] 예제 #3

yul_S2 2022. 12. 28. 12:36
반응형

 1.  다음의 두줄을 주석문 처리하시오.

SQL 응용
본인이름

SET SERVEROUTPUT ON;
DECLARE
BEGIN
    DBMS_OUTPUT.PUT_LINE('SQL 응용');
    DBMS_OUTPUT.PUT_LINE('본인이름');
END;
/
--SQL 응용
--본인이름


--PL/SQL 프로시저가 성공적으로 완료되었습니다.

 

 

 2.  PL/SQL의 SELECT문으로 EMP데이블에서 TURNER의 사원번호, 이름, 부서번호를 조회하시오.

SET SERVEROUTPUT ON;
  
DECLARE
    SONNO EMP.EMPNO%TYPE;
    SONNAME EMP.ENAME%TYPE;
    SONNDEPTNO EMP.DEPTNO%TYPE;
BEGIN
    SELECT EMPNO, ENAME, DEPTNO INTO SONNO, SONNAME, SONNDEPTNO
    FROM EMP
    WHERE ENAME = 'TURNER';
    DBMS_OUTPUT.PUT_LINE('사번 이름 부서번호');
    DBMS_OUTPUT.PUT_LINE('-------------------------');
    DBMS_OUTPUT.PUT_LINE(''||SONNO||' '||SONNAME||' '||SONNDEPTNO);
END;
/*
사번 이름 부서번호
-------------------------
7844 TURNER 30


PL/SQL 프로시저가 성공적으로 완료되었습니다.
*/

 

 

 

 3.  PL/SQL의 다중 if..then..elsif..else문을 이용하여 TURNER의 사원번호, 이름, 부서번호, 부서명을 조회하시오.

DECLARE
    SONEMP EMP%ROWTYPE;
    SONDNAME VARCHAR2(14);
BEGIN
    SELECT * INTO SONEMP
    FROM EMP
    WHERE ENAME = 'TURNER';
    IF (SONEMP.DEPTNO = 10) THEN
    SONDNAME := 'ACCOUNTING';
    ELSIF (SONEMP.DEPTNO = 20) THEN
    SONDNAME := 'CLERK';
    ELSIF (SONEMP.DEPTNO = 30) THEN
    SONDNAME := 'SALES';
    ELSIF (SONEMP.DEPTNO = 40) THEN
    SONDNAME := 'OPERATIONS';
    END IF;
    DBMS_OUTPUT.PUT_LINE('사번  이름   부서번호   부서명');
    DBMS_OUTPUT.PUT_LINE('------------------------------');
    DBMS_OUTPUT.PUT_LINE(SONEMP.EMPNO || ' ' || SONEMP.ENAME || '     ' || SONEMP.DEPTNO || '    ' ||SONDNAME);
END;
/*
사번  이름   부서번호   부서명
------------------------------
7844 TURNER     30    SALES


PL/SQL 프로시저가 성공적으로 완료되었습니다.
*/

 

 

 

 4.  PL/SQL의 WHILE문을 사용하여 1부터 200까지 합을 구하는 PL/SQL 문을 coding하시오.

# 방법1

SET SERVEROUTPUT ON;
DECLARE
    V_NUM NUMBER ;
    V_SUM NUMBER := 0;
BEGIN
    V_NUM := 1;
    WHILE V_NUM <= 200
        LOOP
         V_SUM := V_SUM + V_NUM;
         V_NUM := V_NUM + 1;
        END LOOP;
    DBMS_OUTPUT.PUT_LINE('1부터 200까지의 합계 : ' || V_SUM);
END;
/
/*
1부터 200까지의 합계 : 20100


PL/SQL 프로시저가 성공적으로 완료되었습니다
*/

 

# 방법2

SET SERVEROUTPUT ON;
DECLARE
    NUM NUMBER := 0;
    I NUMBER :=0;
BEGIN
    WHILE (NUM < 200) 
    LOOP
        NUM := NUM + 1;
        I := I+NUM;
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('총합='||I);
END;
/
/*
총합=20100


PL/SQL 프로시저가 성공적으로 완료되었습니다
*/

 

 

반응형