본문 바로가기

JAVA 공책/=> 다시 정리

Oracle의 프로그래밍 PL/SQL & Procedure

오라클은 SQL로 프로그래밍을 할 수 있는 기능이 있습니다.

바로 PL/SQL이라는 것으로 데이터베이스의 개념은 아닙니다.

MSSQLServer에서는 T-SQL이라고 합니다.

현재로서는 3개의 언어를 배워야 하는 상태이므로 이후에 자세히 알아보시기 바랍니다.


Procedure

이 얘기를 꺼낸 것은 여기서 procedure이라는 개체가 있기 때문입니다.

procedure는 자주 사용하는 SQL 문장을 하나의 이름으로 묶어서 만들어 두고 사용하는 기능입니다. 관계형 데이터베이스마다 만드는 방법이 다르기 때문에 다른 데이터베이스를 사용하신다면 이 방법은 안 맞을 수도 있습니다.

참고로 오라클에서 프로시저를 만드는 문법은 PL/SQL 이고 MSSQLServer에서 만드는 문법을 T-SQL 이라고 합니다.

프로시저를 만들어서 사용하면 서버의 메모리에 프로시저가 상주하기 때문에 매번 SQL 문장을 작성해서 실행하는 것보다 트래픽 수를 줄일 수 있어서 효율적입니다.

프로시저는 명령어를 사용하기 전에 작업해야 하는 것이 있는데 아래 내용과 같이 작성하고 한번 실행 후에 프로시저를 생성, 삭제, 수정 할 수 있습니다.

set serveroutput on
begin
  DBMS_OUTPUT.PUT_LINE('Hello PL/SQL');
end;
/


프로시저를 생성하는 틀은 아래와 같습니다.

CREATE [OR REPLACE ] PROCEDURE prcedure_name
( argument1 [mode] data_taye,
  argument2 [mode] data_taye . . .
)
IS
local_variable declaration
BEGIN
statement1;
statement2;
. . .
END;
/

ceate [or replace] procedure 프로시저이름
(매개변수이름 용도 자료형...)
is
사용자 정의 변수
begin
수행할 내용
end;
/


만든 프로시저를 실행시키려면 아래와 같이 작성하면 됩니다.

execute 프로시저이름(매개변수 나열);


프로시저를 이제 사용할 일이 없다면 삭제하게 되는데, 명령어는 아래와 같습니다.

drop procedure 프로시저이름;






Procedure 실습

1. 매개변수가 없는 프로시저 만들기

1) dept 테이블의 모든 데이터를 삭제하는 프로시저 만들기

create or replace procedure delete_dept
is
begin
delete from dept;
end;
/


2. dept 테이블에 데이터를 삽입하는 프로시저


create or replace procedure insert_dept
( pcd_deptno dept.deptno%type,
pcd_dname dept.dname%type,
pcd_loc dept.loc%type)
is
begin
insert into dept(deptno, dname, loc) values(pcd_deptno, pcd_dname, pcd_loc);
end;
/

execute insert_dept(50, '영업', '춘천');

select * from dept;



3. deptno를 입력받아서 dept 테이블에서 deptno에 해당하는 데이터를 삭제하는 프리시저 만들기


create or replace procedure delete_deptno
( dd_deptno dept.deptno%type )
is
begin
delete from dept
where deptno = dd_deptno;
end;
/
execute delete_deptno(50);
select * from dept;


'JAVA 공책 > => 다시 정리' 카테고리의 다른 글

Parameter  (0) 2018.08.24
Exception Handling(예외처리)  (0) 2018.08.23
인터페이스  (0) 2018.08.22
Trigger  (0) 2018.07.31
Database에서의 Inline view & Rownum & Sequence & Index & Synonym  (0) 2018.07.31