두 숫자를 제공하면 덧셈을 해서 결과값을 반환하는 함수를 정의하시오.(함수명 add_num)A
CREATE OR REPLACE FUNCTION SUM_FUNC(num1 IN NUMBER, num2 IN NUMBER) RETURN NUMBER
IS
result NUMBER;
BEGIN
DBMS_OUTPUT.ENABLE;
result := num1+num2;
DBMS_OUTPUT.PUT_LINE(result);
RETURN result;
END;
/
SELECT SUM_FUNC(10, 20) FROM DUAL;
부서번호를 입력하면 해당 부서에서 근무하는 사원 수를 반환하는 함수를 정의하시오.
(함수명 get_emp_count)
CREATE OR REPLACE FUNCTION get_emp_count(deptno EMPLOYEES.DEPARTMENT_ID%TYPE) RETURN NUMBER
IS
emp_count NUMBER;
BEGIN
SELECT COUNT(*)
INTO emp_count
FROM EMPLOYEES
WHERE DEPARTMENT_ID=deptno;
RETURN emp_count;
END;
/
SELECT get_emp_count(10) FROM DUAL;
emp테이블을 이용해서 입사일을 제공하면 근무연차를 구하는 함수를 정의하시오.
(소수점 자리 절삭, 함수명 get_info_hiredate)
CREATE OR REPLACE FUNCTION get_info_hiredate(empno EMPLOYEES.EMPLOYEE_ID%TYPE) RETURN NUMBER
IS
year_count NUMBER;
BEGIN
SELECT TRUNC((SYSDATE - HIRE_DATE)/365)
INTO year_count
FROM EMPLOYEES
WHERE EMPLOYEE_ID=empno;
RETURN year_count;
END;
/
SELECT get_info_hiredate(100) FROM DUAL;
select hire_date from employees where employee_id=100;
emp테이블을 이용해서 사원번호를 입력하면 해당 사원의 관리자 이름을 구하는 함수를 정의하시오.
(함수명 get_mgr_name)
CREATE OR REPLACE FUNCTION get_mgr_name(empno EMPLOYEES.EMPLOYEE_ID%TYPE) RETURN VARCHAR2
IS
mgr_name VARCHAR2(10);
BEGIN
SELECT LAST_NAME
INTO mgr_name
FROM EMPLOYEES
WHERE EMPLOYEE_ID = ( SELECT MANAGER_ID
FROM EMPLOYEES
WHERE EMPLOYEE_ID=empno);
RETURN mgr_name;
END;
/
SELECT EMPLOYEE_ID, MANAGER_ID FROM EMPLOYEES;
SELECT get_mgr_name(101) FROM DUAL;
emp테이블을 이용해서 사원번호를 입력하면 급여 등급을 구하는 함수를 정의하시오.
4000~5000 A, 3000~4000미만 B, 2000~3000미만 C, 1000~200미만 D, 1000미만 F (함수명 get_sal_grade)
CREATE OR REPLACE FUNCTION get_sal_grade(empno EMPLOYEES.EMPLOYEE_ID%TYPE) RETURN VARCHAR2
IS
temp_sal NUMBER;
grade VARCHAR2(10);
BEGIN
DBMS_OUTPUT.ENABLE;
SELECT SALARY
INTO temp_sal
FROM EMPLOYEES
WHERE EMPLOYEE_ID=empno;
CASE
WHEN 4000 <= temp_sal THEN grade:='A';
WHEN 3000 <= temp_sal AND temp_sal < 4000 THEN grade:='B';
WHEN 2000 <= temp_sal AND temp_sal < 3000 THEN grade:='C';
WHEN 1000 <= temp_sal AND temp_sal <2000 THEN grade:='D';
ELSE grade:='F';
END CASE;
RETURN grade;
END;
/
SELECT get_sal_grade(100) FROM DUAL;
SELECT SALARY FROM EMPLOYEES WHERE EMPLOYEE_ID=100;
Comments