일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 스프링 CRUD게시판
- 자바배열예제
- 프로그래머스 SQL
- crud게시판
- spring crud
- 스프링게시판만들기
- CRUD게시판만들기
- 프로그래머스 MYSQL
- 자바기초
- 프로그래머스 쿼리문
- jsp 팝업띄우기
- 오버라이딩
- js datepicker
- 오라클설치
- 2020정보처리기사실기정리
- 스프링 crud
- 정처기실기정리
- spring crud게시판
- 2020정보처리기사실기요약
- 2020정보처리기사실기
- 날짜지정팝업
- Oracle기초
- jsp 날짜팝업
- 정보처리기사실기정리
- 자바 정규표현식 예제
- html기초
- 자바연산자
- PLSQL
- jsp게시판만들기
- 게시판만들기
Archives
- Today
- Total
영보의 SystemOut.log
[Oracle] PL/SQL- Procedure(프로시저)와 예제 본문
반응형
개념
# PROCEDURE 프로시저
- 특정 작업을 수행 하는, 이름이 있는 PL/SQL BLOCK
- 매개 변수를 받을 수 있고, 반복적으로 사용 할 수 있는 BLOCK
- 보통 연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는 PL/SQL BLOCK을 데이터베이스에 저장하기 위해 생성함
- 장점 : 빠름, 파라미터 사용 가능, 여러 어플리케이션과 공유 가능
# PROCEDURE 프로시저의 기본 문법
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
CREATE [OR REPLACE] procedure name
IN argument
OUT argument
IN OUT argument
IS
[변수의 선언]
BEGIN --> 필수
[PL/SQL Block]
-- SQL문장, PL/SQL제어 문장
[EXCEPTION] --> 선택
-- error가 발생할 때 수행하는 문장
END; --> 필수
|
cs |
# # PROCEDURE 프로시저의 문법 & 예제
문법 |
예제 |
* 생성=> ALTER가 없다 (수정ㄴㄴ) CREATE [OR REPLACE] PROCEDURE pro_name( 매개변수, 매개변수... 1) 스칼라 변수, 2) %TYPE ) IS (AS) 지역변수 설정 BEGIN 제어 → 제어문, 연산자, SQL END; / * 삭제 DROP PROCEDURE pro_name; * 호출 SELECT → EXECUTE INSERT, UPDATE, DELETE → CALL * 매개변수 IN : 내부에서만 사용하는 변수 OUT : Call By Reference → 결과 값을 받는 변수 INOUT : 내부사용, 값을 받는 변수 |
CREATE PROCEDURE empInsert( name IN VARCHAR2(20), addr IN VARCHAR2(100), tel IN VARCHAR2(20), result OUT VARCHAR2(100) → 메모리 주소 (주소에 값을 채운다) ) int* p; void disp(int* p,int k) { *p=100; } disp(p, 10); ==> p=100 |
예제
1. 먼저 테이블을 생성
1
2
3
4
5
6
|
--PL/SQL과 더불어 공백 주면 오류난다 => 공백 조심)
CREATE TABLE pl_student (
hakbun NUMBER PRIMARY KEY,
name VARCHAR2(34) NOT NULL,
kor NUMBER, eng NUMBER, math NUMBER
);
|
cs |
- PL/SQL과 더불어 공백 주면 오류난다 => 공백 조심
2. 테이블에 데이터 추가
1
2
3
|
INSERT INTO pl_student VALUES(1,'홍길동',90,90,100);
INSERT INTO pl_student VALUES(2,'박문수',85,80,75);
COMMIT;
|
cs |
3. 데이터 조회해보기
1
|
SELECT * FROM pl_student;
|
cs |
- 데이터가 정상적으로 출력되는걸 확인할 수 있다
4. 테이블에 데이터 추가 쿼리문을 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
--추가
CREATE OR REPLACE PROCEDURE studentInsert(
pName pl_student.name%TYPE,
pKor pl_student.kor%TYPE,
pEng pl_student.eng%TYPE,
pMath pl_student.math%TYPE
)
IS
BEGIN
INSERT INTO pl_student VALUES(
(SELECT NVL(MAX(hakbun)+1,1) FROM pl_student),
pName,pKor,pEng,pMath
);
COMMIT;
END;
/
|
cs |
5. 컬럼에 데이터 추가
1
|
CALL studentInsert('심청이',80,90,76);
|
cs |
- 위와 같이, 값 넣을 때 insert into 사용하지 않고 call 해주면 훨씬 간단하다.
6. studentDetailData
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
create or REPLACE PROCEDURE studentDetailData(
pNo NUMBER,
pName out VARCHAR2,
pKor out number,
pEng out number,
pMath out number
)
is
begin
select name,kor,eng,math into pName,pKor,pEng,pMath
from pl_student
where hakbun=pNo;
end;
/
|
cs |
7. 데이터 출력
1
2
3
4
5
6
7
8
9
10
|
VARIABLE pName VARCHAR2;
VARIABLE pKor NUMBER;
VARIABLE pEng NUMBER;
VARIABLE pMath NUMBER;
EXECUTE studentDetailData(1,:pName,:pKor,:pEng,:pMath);
PRINT pName;
PRINT pKor;
PRINT pEng;
PRINT pMath;
--스칼라변수
|
cs |
반응형
'Database > Oracle' 카테고리의 다른 글
[Oracle] PL/SQL -TRIGGER 개념과 예제 (0) | 2020.11.16 |
---|---|
[Oracle]PL/SQL- CURSOR/PROCEDURE vs FUNCTION 과 예제 (1) | 2020.11.13 |
[Oracle] PL/SQL- Cursor(커서)와 예제 (0) | 2020.11.11 |
[Oracle] Oracle 입력 값 받아서 구구단 출력 예제 (0) | 2020.11.10 |
[Oracle] PL/SQL - 제어문 (반복문 / 선택문 / 조건문) 종류와 예제 (0) | 2020.11.10 |