SQL_4일차

서창민·2023년 3월 14일
0

SQL

목록 보기
4/10
post-thumbnail

23.03.14 화 4일차

오늘은 어제배운 프로시저와
새로운 내용인 패키지에 관해서 배웠다.
오늘 배운 내용을 알아보자.

테이블 속성 정보

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. 확인
의 경로가 필요하다.

profile
Back-end Developer Preparation Students

0개의 댓글