Back-end/DataBase

[DB][oracle] 프로시저 Procedure

cheersHena 2019. 1. 8. 16:22
반응형



프로시저란 Procedure (in oracle)


기능(작업단위)를 미리 만들어놓고 호출하여 사용하는것. 

빠른 쿼리 실행

재사용성



프로시저 생성방법


1. 인수없는 경우 


CREATE PROCEDURE 프로시저 이름

IS

[

변수이름 데이터타입; -- 프로시저 내에서 사용할 변수선언

변수이름 데이터타입;

변수이름 데이터타입;

.

.

]

BEGIN 

기능구현;

END



2.인수있는경우


CREATE PROCEDURE 프로시저 이름(변수이름 IN 데이터타입, 변수이름 IN 데이터타입, ... )

IS

[

변수이름 데이터타입;

변수이름 데이터타입;

변수이름 데이터타입;

.

.

]

BEGIN 

기능구현;

END



프로시저 호출방법 


EXEC 프로시져 이름;  --인수없는 경우.

EXEC 프로시져 이름(값,값...) --인수있는경우 



ex) 메세지 출력  프로시저


CREATE PROCEDURE print_test

IS

BEGIN

 dbms_output.put_line('Hello Oracle!');


END; 

--call procedure

EXEC print_test; 



ex) 인수로 아이디, 이름, 나이, 주소 입력받아 userlist 테이블에 INSERT   한 후 인수의 값들을 출력하는 프로시저 작성. (인수에 기본값 지정)


SELECT * FROM  userlist;


CREATE OR REPLACE PROCECURE p_user_insert(

id IN userlist.id%TYPE := 'hena' ,

name IN userlist.name%TYPE DEFAULT '아무개',

age IN userlist.age%TYPE := 10,

addr IN userlist.addr%TYPE DEFAULT '서울'

)

IS 

BEGIN

INSERT INTO userlist VALUES (id,name,age,addr); 

dbms_output.put_line(' INSERT 정보는' || id || name || age || addr);

END;


--프로시저 실행 


EXEC p_user_insert('hyesue12','이혜수',28,'서울');

EXEC p_user_insert('present','김지훈',28,'과천');    

EXEC P_user_insert; --인수안넣으면 기본값으로 들어간다.


*저장된 프로시저 찾기


SELECT * FROM user_objects WHERE LOWER(object_type) = 'procedure';

























반응형