DB_SQL_SELECT INTO

BBBeom·2022년 8월 18일

DB

목록 보기
16/18

SELECT INTO

PL/SQL 에서 데이터를 변수에 담으려고 할때 가장 쉽고 빠른 방법이다

DECLARE문에서도 변수에 값을 담을수 있지만 SELECT INTO는 어떻게 하는지 한번 보자

- 문법

DECLARE 
변수명1 데이터타입
BEGIN
	SELECT 컬럼명
    INTO 변수명1
    FROM 테이블명
    WHERE 조건
END;

먼저 담으려고하는 변수명과 그변수명의 데이터 타입을 선언해줘야 하는데
이때 데이터타입은 담으려고하는 데이터타입과 일치해야한다

예를들어 DNAME이라는 컬럼의 데이터를 넣으려고 한다면 처음 선언할때도
데이터타입을 맞춰주어야 한다
변수명1 DEPT.DNAME%TYPE 이런식으로 말이다

예제랑 같이 보는게 이해하기 쉽다

- 예제

SET SERVEROUTPUT ON;

DECLARE
A DEPT.LOC%TYPE; -- A라는 변수명에다 넣고싶은 데이터의 타입을 선언해주었다

BEGIN
  SELECT LOC	-- 넣고싶은 데이터
  INTO A		-- 선언한 변수명
  FROM DEPT
  WHERE LOC = 'NEW YORK';	-- 이조건으로 인해서 A에는 NEW YORK이라는 값 하나만 들어가게 된다

  DBMS_OUTPUT.PUT_LINE(A); -- 잘 담아졌나 출력해보자

END;
/

-- 컬럼의 특정데이터 하나를 변수에 담는 과정이 되었다

- 데이터를 여러개 담고싶다면?

DECLARE
A DEPT%ROWTYPE; -- ROWTYPE은 DEPT테이블의 모든 컬럼의 타입을 지정해줄 수 있다
BEGIN
    SELECT *	-- 모든 컬럼의 타입이기때문에 모든컬럼을 선택했다
    INTO A
    FROM DEPT
    WHERE DEPTNO = 10;	-- 모든컬럼이지만 한개의 행만 A에 넣을수 있으므로
						-- WHERE문에서 조건을 붙여서 한개의 행을 지정했다
    DBMS_OUTPUT.PUT_LINE(A.DEPTNO || ' : ' || A.DNAME || ' : ' || A.LOC);
    --A에는 모든 컬럼의 단일행의 데이터가 들어가 있으므로
    --리턴받을려고 할때 A.DEPTNO 형식으로 불러와야한다 그냥 A로는 불러올수없다

END;

- 여러 변수를 한번에 실행하는방법

SET SERVEROUTPUT ON;

DECLARE
A DEPT.LOC%TYPE;		-- 여러변수선언
B DEPT.DEPTNO%TYPE;
C DEPT.DNAME%TYPE;

BEGIN
  SELECT LOC,DEPTNO,DNAME	-- 여러 변수에 맞는 각각의 데이터타입을 순서대로 작성해야한다
  INTO A,B,C		-- 데이터 타입끼리 일치하게끔 순서배치를 잘해야한다
  FROM DEPT
  WHERE LOC = 'NEW YORK';  -- 하나의 행만 선택하게 조건을 붙인다

  DBMS_OUTPUT.PUT_LINE(A || ' : '|| B || ' : '|| C);  -- 잘담았는지 확인하기

END;
/

profile
BackEnd_BasketBall_Beom

0개의 댓글