오늘은 어제배운 프로시저와
새로운 내용인 패키지에 관해서 배웠다.
오늘 배운 내용을 알아보자.
테이블 속성 정보
desc + 테이블명;
위에 코드를 입력하게 되면
테이블 속성 정보를 알 수 있다.
테이블 속성 정보는 컬럼명과 자료형으로
나뉘어서 출력된다.
프로시저
procedure의 기본 형식은 아래와 같다.
CREATE OR REPLACE PROCEDURE 프로시저명
(
매개변수 IN|OUT|INOUT 데이터타입,
매개변수 IN|OUT|INOUT 데이터타입
)
IS|AS
선언영역
BEGIN
실행영역
END;
course 테이블의 insert를 활용한
procedure를 만들어보았다.
-- ps_insert_course 프로시저 만들기
Create or replace procedure ps_insert_course
(
ccno VARCHAR2,
ccname NVARCHAR2,
ccredit VARCHAR2,
cdept NVARCHAR2,
cprname NVARCHAR2
)
is
begin
insert into course (CNO, CNAME, CREDIT, DEPT, PRNAME)
values(cCNO, cCNAME, cCREDIT, cDEPT, cPRNAME);
end;
--
execute ps_insert_course
('p123', 'string', '3', '전산과', '최치열');
-- 추가 확인
select * from course;
위와같은 코딩으로 course 테이블의 CNO, CNAME, CREDIT, DEPT, PRNAME 칼럼에 값을 부여한
레코드를 추가할 수있었다.
후에 selece * from 테이블 구문으로
테이블의 구성을 확인하며 정상적으로 추가되었는지
확인할 수 있었다.
위와 같은 방법으로 Delete와 update, select도
작성해보았다.
UPDATE 프로시저 예시
-- ps_update_course 프로시저 만들기
Create or replace procedure ps_update_course
(
ccno VARCHAR2,
ccredit VARCHAR2,
cdept NVARCHAR2,
cprname NVARCHAR2
)
is
begin
update course set
credit = ccredit, dept = cdept, prname = cprname
where cno = ccno;
end;
execute ps_update_course('p124', '3', '전산과', '영심이');
select from course;
DELETE 프로시저 예시
-- ps_delete_course 프로시저 만들기
Create or replace procedure ps_delete_course
(
cprname NVARCHAR2
)
is
begin
delete from course where prname = cprname;
end;
execute ps_delete_course('영심이');
select from course;
SELECT 프로시저 예시
-- select_course 프로시저 만들기
set serveroutput on; -- 결과값 출력되기 위한 설정
Create or replace procedure select_course
as
var1 int;
begin
select count() into var1 from student
where dept = '컴퓨터' ;
DBMS_OUTPUT.PUT_LINE('컴퓨터과학생수 ' var1);
end;
execute select_course;
SELECT 프로시저 사용시 DBMS를 사용하여 출력을 하기에
가장 처음으로 Set serveroutput on; 을 선언하여
출력이 가능한 환경으로 만들어준다.
아직은 형식에 익숙하지 않지만 보다 익숙하도록
자주 작성해보도록 해야겠다.
패키지
패키지란
프로시저에서 여러개의 결과값을 출력하기위해 사용한다.
기본 형식은 아래와 같다.
CREATE [OR REPLACE] PACKAGE 패키지 명 IS
TYPE 타입 명 IS REF CURSOR;
END;
패키지를 활용하여 프로시저를 만들어보았다.
-- 모든 레코드 출력하기
Create or replace procedure sp_studentAll
(
ret out pkg.t_ref -- OUTPUT
)
is
begin
open ret for
select * from student ;
end;
패키지를 활용하여 실행하기 위해선
1. 생성된 프로시저에서 목록 우클릭 실행
2. IN 값에 값을 직접 입력
3. 확인
의 경로가 필요하다.