초급의 끄적거림

[MSSQL] DECLARE (변수선언) / use 구문 / EXEC 와 동적 쿼리 본문

DB/MSSQL

[MSSQL] DECLARE (변수선언) / use 구문 / EXEC 와 동적 쿼리

codingD 2019. 12. 27. 14:51

참고 : https://stophyun.tistory.com/62

 

1. DECLARE (변수선언)


  • 변수 : 값을 담아두는 것, 값 뿐만 아니라 여러 행으로 떨어지는 결과를 담을 수 있어서 '테이블 변수'도 가능
  • 프로그래밍 언어에서처럼 변수를 선언하고 사용가능
  • 프로시저와 함께 유용하게 쓰임
변수 선언 : DECLARE @variable_name data_type
변수에 값 대입 : SET @variable_name = value
변수의 값 출력 : SELECT @variable_name
ex) var1 이라는 이름의 int형 변수를 선언해서 50이라는 값을 대입하고 출력
DECLARE @var1 INT
SET @var1 = 50
SELECT @var1
  • data_type이 table 형식이 경우
DECLARE @variable_name TABLE
(
   column_name data_type,
   column_name data_type,
   .....
)
--테이블 변수 생성, 자료형 대신 테이블 스키마가 들어감
DECLARE @userData TABLE (
  name varchar(30) NOT NULL,
  CreateDate datetime NOT NULL
);

-- insert into select 문을 이용하여 k 로 시작하는 회원의 리스트를 할당해보자
INSERT INTO @userData
SELECT name, CreateDate
FROM tblPerson
WHERE name like 'k%'

--할당 후에는 변수를 이용하여 테이블처럼 사용가능
SELECT * FROM @userData

 

2. use 구문


  • 현재 사용하는 데이터베이스를 지정 또는 변경하는 구문
use 데이터베이스_이름

ex) use AdventureWorks
  • 이렇게 지정해 놓은 후에는 특별히 다시 use 문을 사용하거나, 특정 DB를 사용하겠다고 명시하지 않는 이상 모든 SQL문은 AdventureWorks에서 수행
    • 즉, "지금부터 AdventureWorks를 사용하겠으니, 모든 쿼리는 AdventureWorks 데이터베이스에서 수행하라"

 

3. EXEC와 동적 (adhoc)쿼리


  • 참고 : http://egloos.zum.com/sweeper/v/3002591
  • EXEC : EXEC문은 SQL문을 실행시키는 역할 = EXECUTE
  • 다음 두 예제는 차례로 저장프로시저와 문자열 쿼리를 EXEC로 실행하는 내용
    • 이 같이 EXEC문을 사용하여, 쿼리문 내에서 다른 쿼리문을 실행시킬 수 있다
    • 이렇게 EXEC()를 이용해서 쿼리문을 실행하는 것을 '동적쿼리' 라고 한다
--#1. 저장 프로시저 호출 예제
USE AdventureWorks2019
GO

-- uspGetExployeeManagers 라는 저장프로시저에 인자 6을 넘기며 실행
-- usp (user stored procedure)
EXEC dbo.uspGetEmplyeeManagers 6
GO

--#2. 직접 문자열 쿼리 실행 예제
USE Son
GO

DECLARE @SQLStmt VARCHAR(80) = 
	'SELECT * FROM UserTable WHERE ID = ''LHJ'''
EXEC(@SQLStmt)

 

'DB > MSSQL' 카테고리의 다른 글

[MSSQL] ANSI_WARNING 정리  (0) 2020.01.29
[MSSQL] 테이블, 칼럼 개체 확장 속성 보기  (0) 2020.01.13
[MSSQL] 락 (LOCK ) 걸린 쿼리 확인하고 해제  (0) 2020.01.10
[MSSQL] 기본사항  (0) 2019.12.27
[MSSQL] 프로시저  (0) 2019.12.27
Comments