SQL/SQL 연습

PROCEDURE, FUNCTION 연습

HicKee 2022. 11. 14. 16:07

PROCEDURE

CREATE OR REPLACE PROCEDURE emp_info(
    p_empdno IN employee.dno%TYPE) IS
BEGIN
for empdno_buf in( SELECT * FROM employee WHERE dno = p_empdno)
    loop
    dbms_output.put_line('부서번호 : '||empdno_buf.dno||' 사원번호 : '||empdno_buf.eno||' 이름 : '||empdno_buf.ename||'/ 급여 : '||empdno_buf.salary);
    end loop;
END;
/

EXECUTE emp_info(10);

 

FUNCTION

 

학생의 담당교수를 불러오는 함수

CREATE OR REPLACE FUNCTION PROF_GET_NAME(
    V_PRONUM PROFESSOR.PRONUM%TYPE)
    RETURN PROFESSOR.PRONAME%TYPE
    IS
    V_PRONAME PROFESSOR.PRONAME%TYPE;
BEGIN
    SELECT PRONAME INTO V_PRONAME FROM PROFESSOR WHERE PRONUM = V_PRONUM;
    RETURN V_PRONAME;
        EXCEPTION WHEN OTHERS THEN
        dbms_output.put_line(SQLCODE||SQLERRM);
        RETURN 0;
END;
/
SELECT STNAME NAME ,MAJOR MAJOR, PROF_GET_NAME(PRONUM) PFS
FROM STUDENT;

 

교수별 담당 학생수를 나타내는 함수 

CREATE OR REPLACE FUNCTION STD_COUNT(
V_PRONUM PROFESSOR.PRONUM%TYPE)
RETURN NUMBER
IS
ST_COUNT NUMBER;
BEGIN 
    SELECT COUNT(*) INTO ST_COUNT FROM STUDENT WHERE PRONUM = V_PRONUM;
    RETURN ST_COUNT;
            EXCEPTION WHEN OTHERS THEN
        dbms_output.put_line(SQLCODE||SQLERRM);
        RETURN 0;
END;
/
SELECT PRONAME 이름 ,PROMAJOR 학과, STD_COUNT(PRONUM) "담당 학생수"
FROM PROFESSOR;

'SQL > SQL 연습' 카테고리의 다른 글

ERD : ER 다이어그램 연습 2  (0) 2022.11.18
ERD : ER 다이어그램 연습 1  (0) 2022.11.17
PL/SQL 연습  (0) 2022.11.12
VIEW 연습  (0) 2022.11.10
제약 조건 연습  (0) 2022.11.10