ORACLE2009. 11. 11. 21:27

-- PL/SQL의 종류
-- 1. Anonymous Procedure (이름없는 프로시져)
-- 수행할때마다 컴파일해서 연산/결과를 출력
-- 2. Stored Procedure (이름있는 프로시져)
-- 컴파일하면 오라클에 PCODE(컴파일된코드) 형태로 저장되었다가
-- 호출하면 연산/결과를 출력
-- 3. Stored Function (이름있는 함수)
-- 오라클에 내장되어 있는 내장함수들과 사용자가 만든 사용자정의함수로 분류
-- 오라클에 PCODE(컴파일된코드) 형태로 저장되었다가 호출하면 연산하고
-- 결과를 반환
-- 4. Package
-- 비슷한 기능을 하는 함수/프로시져를 묶음
-- 선언부와 구현부로 나누어서 작성
-- 5. Trigger
-- 테이블에 데이터의 입출력을 감지해서 다른 테이블에 입출력하는 기능

-- Stored Procedure
create table log_table (
userid varchar2(10),
log_date date
);

select * from log_table;

-- 매개변수의 모드(mode)
-- in : 값을 프로시져 외부에서 받아오는 매개변수 (기본값)
-- out : 프로시져의 연산결과를 외부로 보내는 매개변수
-- in out : 값을 받아와서 외부르 보내는 매개변수

create sequence s_emp_id
start with 25;

create table top_dogs (
name varchar2(10),
salary number(7,2)
);


-- Stored Function (저장함수)
-- 1. 오라클 내장함수 : 오라클에 내장되어 있는 함수
-- 2. 사용자 정의함수 : 사용자가 생성한 함수

-- 실습
-- 1. 핸드폰번호를 입력하면 010-1234-1234 형식으로 출력해주는 프로시져 hp_proc
-- 실행 : exec hp_proc('01012341234');
-- 결과 : 010-1234-1234
-- 2. 문자열을 입력하면 문자열의 길이를 리턴하는 함수 str_func
-- 실행 : select str_func('안녕하세요!') from dual;
-- 결과 : 6
-- 3. 학생정보 입력/삭제
create table student(stdno number, stdname varchar2(10));
-- * record타입으로 학생정보 저장
-- 입력 : 프로시져 registStudent - 학생번호(number), 학생명(varchar2)
--   실행 : exec registStudent(10, '홍길동')
--   결과 : 홍길동 학생이 등록되었습니다. or 10번 학생이 있습니다.
-- 삭제 : 프로시져 deleteStudent - 학생번호(number)
--   실행 : exec deleteStudent(10)
--   결과 : 10번 학생이 삭제되었습니다. or 10번 학생은 없습니다.
-- 수정 : 프로시져 updateStudent - 학생번호(number), 학생명(varchar2)
--        (학생명 수정되도록)
--   실행 : exec updateStudent(10, '강감찬')
--   결과 : 10번 학생이 수정되었습니다. or 10번 학생은 없습니다.
-- 목록 : 프로시져 listStudent (커서 이용)
--   실행 : exec listStudent
--   결과 : 학생리스트가 보여진다.

Posted by Tiwaz