일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 모조칼럼
- HTTP Status 404
- CRUD
- 제약조건
- oracle
- 성적프로그램
- JSP
- 답변형 게시판
- jQuery
- sql developer
- group by
- git
- 과정평가형
- JavaScript
- 부트스트랩
- rownum
- Oracle DB
- HTML
- github
- SQL
- ||
- 이클립스
- 한글 인코딩
- Bootstrap
- Java
- tomcat
- distinct
- alias
- HTTP Status 500
- Oracle SQL
Archives
초급의 끄적거림
[MSSQL] DECLARE (변수선언) / use 구문 / EXEC 와 동적 쿼리 본문
참고 : 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