PL/SQL
- SQL만으로 구현이 어렵거나 구현 불가능한 작업을 수행하기 위해 오라클에서 제공하는 프로그래밍 언어
- 일반 프로그래밍 요소 다 가지고 있고, DB 업무처리하기 위한 최적화된 언어
- 기본단위 : 블록(BLOCK)
- 기본형식
- DECLARE (선언부) : 변수, 상수, 커서 선언
- BEGIN (실행부) : SQL에 선택, 반복처리 등
- END
DECLARE
[실행에 필요한 여러 요소 선언];
BEGIN
[작업을 위해 실제 실행하는 명령어];
EXCEPTION
[PL/SQL 수행 도중 발생하는 오류 처리];
END;
- 화면 출력하기
- SERVEROUTPUT 환경변수 값을 ON 으로 변경해야한다
SET SERVEROUTPUT ON;
BEGIN
DBMS_OUTPUT.PUT_LINE('HELLO');
END;
/
- 반복문
DECLARE
V_NUMBER NUMBER := 13;
BEGIN
IF MOD(V_NUMBER, 2) = 1 THEN
DBMS_OUTPUT.PUT_LINE('홀수입니다!');
END IF;
END;
/
-- 기본 loop
DECLARE
V_CNT NUMBER := 0;
V_SUM NUMBER := 0;
BEGIN
LOOP
V_CNT := V_CNT + 1;
V_SUM := V_SUM + V_CNT;
DBMS_OUTPUT.PUT_LINE(V_SUM);
EXIT WHEN V_CNT = 10;
END LOOP;
DBMS_OUTPUT.PUT_LINE('총 합: ' ||V_SUM);
END;
/
-- FOR LOOP
DECLARE
V_CNT NUMBER;
V_SUM NUMBER := 0;
BEGIN
FOR V_CNT IN 1..10 LOOP
V_SUM := V_SUM + V_CNT;
DBMS_OUTPUT.PUT_LINE(V_SUM);
END LOOP;
END;
/
-- WHILE LOOP
DECLARE
V_CNT NUMBER := 0;
V_SUM NUMBER := 0;
BEGIN
WHILE V_CNT < 10 LOOP
V_CNT := V_CNT + 1;
V_SUM := V_SUM + V_CNT;
DBMS_OUTPUT.PUT_LINE(V_SUM);
END LOOP;
END;
/
SP
- Stored Procedure : 저장 프로시저
- 서버에 저장해놓고 주기적으로 반복해서 사용
- 쿼리문들의 집합
- 여러 동작들을 일괄적으로 처리할때 사용
- 서버 성능 향상
- 유지보수 용이
- 보안강화
- 프로그래머가 생성해놓은 쿼리문을 마치 하나의 메소드 형식으로 관리하는 것
- 프로시저 생성과 실행
-- 프로시저 생성
CREATE OR REPLACE PROCEDURE pro_noparam
IS
V_EMPNO NUMBER(4) := 7788;
V_ENAME VARCHAR2(10);
BEGIN
V_ENAME := 'SCOTT';
DBMS_OUTPUT.PUT_LINE('V_EMPNO: '|| V_EMPNO);
DBMS_OUTPUT.PUT_LINE('V_ENAME: '|| V_ENAME);
END;
/
-- 프로시저 실행
EXECUTE pro_noparam;
- 파라미터를 사용하는 프로시저
- 파라미터를 지정할 때 사용하는 모드
- IN : 지정하지 않으면 기본값으로 프로시저를 호출할 때 값을 입력받음
- OUT : 호출할때 값을 반환
- IN OUT : 호출할 때 값을 입력받은 후 실행 결과 값을 반환
- 파라미터를 지정할 때 사용하는 모드
-- 파라미터 사용하는 프로시저
-- 학번으로 검색하여, 같은 학번 학생의 학년을, 입력받은 학년으로 변경한다
CREATE OR REPLACE PROCEDURE TEST2
(
V_STU_NO IN STUDENT.STU_NO%TYPE,
V_STU_GRADE IN STUDENT.STU_GRADE%TYPE
)
IS
BEGIN
UPDATE STUDENT
SET STU_GRADE = V_STU_GRADE
WHERE STU_NO = V_STU_NO;
END TEST2;
/
-- 실행
EXECUTE TEST2(20153075, 3);
728x90
728x90
'DB - Oracle' 카테고리의 다른 글
SQL - 함수 (0) | 2022.06.22 |
---|---|
SQL - 예외처리 (0) | 2022.06.22 |
데이터베이스의 주요 객체 - Object (0) | 2022.06.20 |
SQL - 집합 연산자, CRUD (0) | 2022.06.17 |
SQL - 트랜잭션 (TRANSACTION) (0) | 2022.06.17 |