🍀 SELECT 문

SELECT select_list
INTO variable_name | record_name
FROM table
WHERE condition;


  • 반드시 하나의 행만을 추출
  • 추출되는 데이터 행이 없거나 하나 이상일 경우 예외 발생
    • TOO_MANY_ROWS: 하나 이상의 데이터 행 추출시
    • NO_DATA_FOUND: 어떤 데이터도 추출하지 못할 떄
  • 다수 개의 데이터 행을 하나씩 추출할 땐 명시적 커서 이용


SELECT 문 예시

  • shop table
shop_no shop_name
1015 ART_STAR
1016 MUSIC_STAR


  • TOO_MANY_ROWS 에러 발생 예
    DECLARE
      v_no shop.shop_no%TYPE;
      v_name shop.shop_name%TYPE;
    BEGIN
      SELECT shop_no, shop_name
      INTO v_no, v_name
      FROM shop;
    
      DBMS_OUPUT.PUT_LINE('상점번호: '||v_no);
      DBMS_OUPUT.PUT_LINE('상점이름: '||v_name);
    END;
    


  • NO_DATA_FOUND 에러 발생 예
    DECLARE 
      v_no shop.shop_no%TYPE;
      v_name shop.shop_name%TYPE;
    BEGIN
      SELECT shop_no, shop_name
      INTO v_no, v_name
      FROM shop
      WHERE shop_no=1000;
    
      DBMS_OUPUT.PUT_LINE('상점번호: '||v_no);
      DBMS_OUPUT.PUT_LINE('상점이름: '||v_name);
    END;
    


🍀 INSERT 문

  • 형식: SQL문과 동일
DECLARE
    v_no shop.shop_no%TYPE;
    v_name shop.shop_name%TYPE;
BEGIN
    SELECT shop_no, shop_name
    INTO v_no, v_name
    FROM shop
    WHERE shop_name='MUSIC STAR';

    INSERT INTO shop
    VALUES (v_no + 1, v_name);
END;


🍀 UPDATE 문

  • 형식: SQL문과 동일
DECLARE 
    v_name shop.shop_name%TYPE;
BEGIN
    v_name := 'PICTURE_STAR';

    UPDATE shop
    SET shop_name = v_name
    WHERE shop_name = 'MUSIC_STAR';
END;


🍀 DELETE 문

  • 형식: SQL문과 동일
BEGIN
    DELETE
    FROM shop
    WHERE shop_name = 'PICTURE_STAR';
END;