검색결과 리스트
ORACLE /PL/SQL ProgramUnit1에 해당되는 글 1건
- 2014.02.16 1. 프로시져 생성
글
PROCEDURE : 미리 정리된 로직에 따라 필요한 명령을 절차적으로 실행하는 서브프로그램
리턴값을 가질 수도 있음.
FUNCTION : 미리 정리된 로직에 따라 필요한 명령을 절차적으로 실행하는 서브프로그램
리턴값이 반드시 있어야한다.
PACKAGE : 서브 프로그램의 묶음.
TRIGGER : 특정 이벤트 발생 시 자동으로 수행되는 PL/SQL 블록
# 치환 변수
BEGIN
UPDATE EMP
SET SAL = 4000
WHERE DEPTNO = &ID;
END ;
/
Enter value for id: 50
old 4: WHERE DEPTNO = &ID;
new 4: WHERE DEPTNO = 50;
PL/SQL procedure successfully completed.
Elapsed: 00:00:01.25
& 치환 변수는 SQLplus/ SQLdeveloper 에서만 사용되는 변수. (SQLplus차원에서 바꾼다.)
SQLplus차원에서 바뀌어 서버에 전달된다.
BEGIN
UPDATE EMP
SET SAL = 4000
WHERE DEPTNO = 50;
END ;
/
이렇게 전달된다.
- 프로시져 생성.
CREATE PROCEDURE UPDATE_EMP --SPEC(PL/SQL 헤더) 시작
( P_SAL NUMBER, --파라미터
P_DEPTNO NUMBER) --SPEC 끝
AS --BODY 시작
V_EMP NUMBER ; --로컬변수
BEGIN
UPDATE EMP
SET SAL = P_SAL
WHERE DEPTNO = P_DEPTNO;
END ;
/ --Body 끝
- 프로시져 수정 시 OR REPLACE를 써서 덮어쓸 수 있다.
- 프로시져 수행시 파라미터값을 넣어서 쓰면된다.
-프로시져 구조를 보기 위해선 DESC UPDATE_EMP;
# 이름지정방식
CREATE OR REPLACE PROCEDURE raise_salary
( p_id IN employees.eployee_id%TYPE DEFAULT 100
p_percent IN NUMBER := 10)
~~~~~~~~
EXECUTE RAISE_SALARY (101,20) : 위치 지정 방식
기본값을 쓴다고 하더라도 앞에있는 파라미터부터 값을 다 주어야한다.
EXECUTE RAISE_SALARY (P_PERCENT =>20) : 이름 지정 방식
CREATE PROCEDURE P1
(
P1 NUMBER :=1
P2 NUMBER :=2
P3 NUMBER :=3
P4 NUMBER :=4)
IS
~~~~~~~~~~~~~~~~~~~~~~~
EXECUTE P1(100,200,300,400)
EXECUTE P1( 1,2,300) --위치 지정방식
EXECUTE P1 (P=>300) --이름 지정방식
EXECUTE P1 (100, P4=>500) --혼합지정방식
EXECUTE P1( P4=>500, 100) → ERROR
혼합 지정방식을 이용하면 이름지정방식이 먼저 나올경우 뒤는 계속 이름 지정방식을 써야한다.
RECENT COMMENT