[DBP] CH3-2. PL/SQL 내에서의 SQL문
🍀 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;