PL/SQL

이태규·2022년 3월 23일
0

SQL

목록 보기
17/26

PL/SQL

  • 일반 프로그래밍 언어 요소를 다 갖고 있으며, 데이터베이스 업무를 처리하기 위한 최적화된 언어
  • BLOCK 구조로 다수의 SQL 문을 한번에 처리하므로 수행 속도가 빠름

3만개 정도 되는 인서트를 일일이 다 할 수 없다.
INSERT 반복문 같은 걸 처리하기 위한 언어

출력하기

SET SERVEROUTPUT ON;

BEGIN
--CONSOLE.LOG, SYSTEM.OUT.PRINTLN();
    DBMS_OUTPUT.PUT_LINE('hello1');
    DBMS_OUTPUT.PUT_LINE('hello2');
END;
/

변수 선언하기

DECLARE
    --   int V_NUM = 1234;
    V_NUM NUMBER(4) := 1234;
    -- String V-STR = "";
    V_STR VARCHAR2(10);
BEGIN
    V_STR := 'hello';
    DBMS_OUTPUT.PUT_LINE('V_NUM :' || V_NUM);
    DBMS_OUTPUT.PUT_LINE('V_STR:' || V_STR);
END;
/

PL/SQL에서는 더하기 대신 ||을 쓴다.

조건문

DECLARE
    V_SCORE NUMBER := 85;
    V_GRADE VARCHAR2(2) := 'B';
BEGIN
    IF(V_SCORE >= 90) THEN
        V_GRADE := 'A';
    ELSIF (V_SCORE >= 80) THEN
        V_GRADE := 'B';
    ELSIF (V_SCORE >= 70) THEN
        V_GRADE := 'C';
    ELSE
        V_GRADE := 'F';
    END IF;
    DBMS_OUTPUT.PUT_LINE('점수 : ' || V_SCORE || '등급 : ' || V_GRADE);
END;
/

반복문

DECLARE
    V_NUM NUMBER := 3;
BEGIN
    --for (int i = 0; i<= 9; i++)
    FOR I IN 1..9 LOOP
        DBMS_OUTPUT.PUT_LINE(V_NUM || '*' || I || '=' || V_NUM * i);
    END LOOP;
END;
/

조회하기

--조회하기
DECLARE
    V_MEM MEMBER2%ROWTYPE;
    --멤버2번에 있는 테이블 타입을 그대로 넣어달라
    V_USERID MEMBER2.USERID%TYPE; -- VARCHAR2(30)
    --멤버2번에 USERID에 타입을 그대로 넣어달라
    
BEGIN
    -- SELECT * FROM 테이블명 WHERE 조건;
    SELECT * INTO V_MEM FROM MEMBER2 WHERE USERID = 'a';
    DBMS_OUTPUT.PUT_LINE(V_MEM.USERID);
    DBMS_OUTPUT.PUT_LINE(V_MEM.USERNAME);
END;
/

DECLARE 타입 자동 설정

DECLARE
V_MEM MEMBER2%ROWTYPE;
V_USERID MEMBER2.USERID%TYPE; -- VARCHAR2(30)
BEGIN
.
.
.

멤버2번에 있는 테이블 타입을 그대로 넣어달라
멤버2번에 USERID에 타입을 그대로 넣어달라

여러개 조회


DECLARE
   --변수 정의 CUR
   CURSOR CUR IS (SELECT * FROM MEMBER2);
BEGIN
   -- CUR만큼 반복
   FOR TMP IN CUR() LOOP
       DBMS_OUTPUT.PUT_LINE('USERID' || TMP.USERID);
   END LOOP;
END;
/
profile
한 걸음씩 나아가자

0개의 댓글