Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- while문
- GET방식
- xml
- https://www.inflearn.com/course/lecture?courseslug=%ea%b9%80%ec%98%81%ed%95%9c%ec%9d%98-%ec%8b%a4%ec%a0%84-%ec%9e%90%eb%b0%94-%ea%b8%b0%eb%b3%b8%ed%8e%b8&unitid=194711
- 김영한
- Spring MVC
- 피그마
- Break
- Forwarding
- WAS
- https://www.inflearn.com/course/lecture?courseslug=%ea%b9%80%ec%98%81%ed%95%9c%ec%9d%98-%ec%8b%a4%ec%a0%84-%ec%9e%90%eb%b0%94-%ea%b8%b0%eb%b3%b8%ed%8e%b8&unitid=194709&category=questiondetail&tab=community&q=1314387
- CONTINUE
- 매핑 #
- JSON형식의 response
- 톰캣
- 다형성 #부모타입 #자식타입
- Request
- 요구사항정의서
- sendRedirect
- Dispatcher
- webserver #WAS #ServerApp
- POST방식
- 화면정의서
- 한글깨짐
- Servlet
- https://www.inflearn.com/course/lecture?courseslug=%ea%b9%80%ec%98%81%ed%95%9c%ec%9d%98-%ec%8b%a4%ec%a0%84-%ec%9e%90%eb%b0%94-%ea%b8%b0%eb%b3%b8%ed%8e%b8&unitid=194690
Archives
- Today
- Total
Step it up now
procedure - cursor 본문
cursor
특정 쿼리문의 처리결과를 담은 영역을 가리키는 포인터
📢 문제
부서번호를 입력받아서(파라미터로 받아서- p_deptno number) 부서 평균 급여(변수선언)보다
많이 받으면 10% 적거나 같으면 20% 인상을 적용하여 급여 테이블을 수정(update - commit)하는 프로시저를 작성하시오.
----------------------------------------------
OPEN emp_cur;
CLOSE emp_cur;
변수 rate number(3,1) - 99.9
avg_sal number(7,2) - 99999.99
-----------------------------------------------
--커서 선언하기
CURSOR emp_cur IS
SELECT empno, ename, sal
FROM emp
WHERE deptno = p_deptno;
--급여평균을 구한다
SELECT avg(sal) INTO avg_sal
FROM emp
WHERE deptno = p_deptno;
create or replace procedure proc_emp_update2(p_deptno IN number)
is
--평균급여 담기
avg_sal number(7,2):=0.0;
--커서에서 꺼내온 사원번호 담기
v_empno number(5):=0;
-- 커서에서 꺼내온 급여 담기
v_sal number(7,2):=0;
-- 커서에서 꺼내온 이름 담기
v_ename varchar2(20):=' ';
--인상요율담을 변수
rate NUMBER(3,1) :=0;
CURSOR emp_cur IS
SELECT empno, ename, sal
FROM emp
WHERE deptno = p_deptno;
BEGIN
SELECT avg(sal) INTO avg_sal
FROM emp
WHERE deptno = p_deptno;
OPEN emp_cur;
LOOP
FETCH emp_cur INTO v_empno, v_ename, v_sal;
EXIT WHEN emp_cur%NOTFOUND;--커서에 값이 없을 때
IF v_sal > avg_sal THEN--10%인상요율
rate := 1.1;
ELSIF v_sal <= avg_sal THEN--20%인상요율
rate := 1.2;
END IF;
UPDATE emp
SET sal = sal*rate
WHERE empno = v_empno;
END LOOP;
commit;
CLOSE emp_cur;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
/
'수업 > SQL' 카테고리의 다른 글
Trigger (0) | 2023.11.28 |
---|---|
Prosedure - Insert, Update, Delete (0) | 2023.11.28 |
procedure 사용하는 이유, 선언 (1) | 2023.11.28 |
procedure 출력 확인 (0) | 2023.11.27 |
3명씩 줄 세우기 (0) | 2023.11.26 |