일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 원씽 내용
- 빅데이터분석기사 독학
- 간단한 채팅 프로그램
- 자바스크립트 undefined
- TCP 채팅
- dom sax 장단점
- Notepad 줄바꿈
- 자바 채팅 프로그램
- 노트패드 줄바꿈
- ajax 비동기식
- 노트패드++ 줄바꿈
- 원씽 후기
- async false
- 원씽 독후감
- xml 파싱 방법
- 빅데이터분석기사 필기
- 빅분기 독학
- Notepad++ 줄바꿈
- 책 원씽
- dom sax 차이점
- 빅데이터분석기사
- 자바 채팅
- 빅분기
- 빅분기 필기
- TCP Socket
- ajax 동기식
- 원씽 책
- async
- 동기식 비동기식
- The OneThing
- Today
- Total
SooBlending
[Oracle] PL/SQL 프로시저/함수 (Procedure/Function) 본문
<저장프로시저> Stored Procedure
- 자주 사용되는 DML,DQL을 모듈화 시켜서 DB에 저장하였다가
필요할 때 호출해서 사용!!
- JAVA의 메소드와 같음
형식)
CREATE [OR REPLACE] PROCEDURE 프로시저명(변수명1 [IN|OUT] 자료형, 변수명2 자료형)
IS
변수선언
BEGIN
실행할 문장1;
실행할 문장2;
실행할 문장3;
-- 초기화, SQL문, 함수호출, 절차적요소(조건문,반복문)
END;
/
실행방법) EXECUTE 프로시저명();
참고)
void hello(String name){
System.out.println("안녕,"+name);
}
----> Stored Procedure(리턴 없고)
String hi(){
return "좋은 하루~!!";
}
----> Stored Function(리턴 있고)
문제) 부서테이블(dept3)에서 40번 부서를 삭제하시오. (프로시저 사용)
drop table dept3;
create table dept3
as select * from dept;
---> pro_test.sql
SQL> @1110/pro_test
Procedure created. ===> 프로시저를 DB에 저장!!(delete 실행 안됨!!)
SQL> execute del_dept()
#40번 부서를 삭제하였습니다!! ===> 정의된 프로시저내의 delete실행!!
SQL> execute del_dept
#40번 부서를 삭제하였습니다!! ===> 정의된 프로시저내의 delete실행!!
SQL> execute del_dept(40)
#40번 부서를 삭제하였습니다!! ===> 정의된 프로시저내의 delete실행!!
문제) 사원테이블(emp3)에서 특정사원의 이름을 입력을 통해 삭제하는 프로시저를 생성하시오.
drop table emp3;
create table emp3 as select * from emp;
---> pro_test2.sql
---> 프로시저명: del_ename
실행 ==> 1. 작성된 프로시저를 DB에 저장(생성)
@1110/pro_test2.sql
2. 저장된 프로시저 이름을 호출(실행!!)
exec[ute] del_ename('ADAMS');
==============================================================
<저장함수> Stored Function
- 실행(함수호출)후 결과를 되돌려 받을 수 있는
return 데이터; 를 반드시 명시해야 함!!
형식)
CREATE [OR REPLACE] FUNCTION 함수명(매개변수 선언)
RETURN 자료형
IS
변수선언
BEGIN
실행할 SQL문
....
RETURN 데이터;
END;
/
사용법)
VARIABLE 바인드변수명 자료형; --변수선언
EXEC[UTE] :바인드변수 := 함수명(); --결과값 저장
PRINT 바인드변수명 --저장값 확인!!
문제) 특정 사원에게 보너스를 지급하려고 하는데 급여의 200%에 해당하는 비용을 지급하려 한다.
이 보너스 금액을 FUNCTION을 통해 구하시오.
---> fun_test.sql
---> 함수명: call_bonus('SMITH');
SQL> @1110/fun_test.sql
Function created.
SQL> variable bonus number
SQL> exec :bonus := call_bonus('SMITH')
PL/SQL procedure successfully completed.
SQL> print bonus
BONUS
----------
1600
'Programming > DataBase' 카테고리의 다른 글
[Oracle] PL/SQL 패키지(Package) (0) | 2017.11.13 |
---|---|
[Oracle] PL/SQL 커서 (Cursor) (0) | 2017.11.13 |
[Oracle] PL/SQL 반복문 (Loop) (for/while) (0) | 2017.11.10 |
[Oracle] PL/SQL (0) | 2017.11.09 |
[Oracle] 시퀀스(Sequence) (0) | 2017.11.09 |