database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 7121 게시물 읽기
No. 7121
동적 쿼리 질문입니다.
작성자
도와주세요
작성일
2018-04-17 18:22:12
조회수
117

 안녕하세요.

동적 쿼리에 대해 질문좀 드리겠습니다.

A 라는 테이블과 @temp_table 이라는 테이블 변수가 있습니다.

여기서 아래와 같은 쿼리를 하면 에러가 납니다. 

DECLARE @temp_table TABLE (num int) 

DECLARE @STR NVARCHAR(1000)

SET @STR = 'SELECT * FROM A WHERE a IN (SELECT num FROM @temp_table)'

EXECUTE sp_excutesql 을 사용하려고 했지만 변수만 사용가능한것 같아서 질문드립니다.

동적쿼리에서 저렇게 IN 조건문에 테이블 변수를 사용할 수 있는 방법이 있을까요 ??

감사합니다.

이 글에 대한 댓글이 총 1건 있습니다.

1. 당연히 말씀하지 않은 이유가 있겠지만 웬만해선 동적 쿼리가 필요 없는 경우가 상당히 많습니다.

 
2-1. 테이블 변수 대신 로컬 임시 테이블 사용
CREATE TABLE #temp_table( num INT );
GO
(이하 생략)
 
2-2. 테이블 타입 사용
-- 테이블 타입 생성
CREATE TYPE tmpTblType AS TABLE( num INT );
GO
-- 테이블 타입 변수
DECLARE @temp_table tmpTblType;
(중간 생략)
SET @sql = N'(앞생략) @temp_table (뒤생략)';
EXEC SP_EXECUTESQL @sql, N'@temp_table tmpTblType READONLY', @temp_table;
 
2-3. 아예 테이블 변수를 동적 쿼리 안에서 생성
DECLARE @sql NVARCHAR(MAX);
SET @sql = N' DECLARE @temp_table( num INT ); '
SET @sql = @sql + ' INSERT INTO @temp_table( num ) VALUES( 3 ); '
(중간 생략)
EXEC SP_EXECUTESQL @sql;
우욱님이 2018-04-19 11:14:41에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
7124조건문에 CASE LIKE 구문을 같이 썼을때 왜 문제일까요? [1]
김태옥
2018-06-12
30
7123안녕하십니까 고수님들 c언어 연동 질문있습니다. [1]
도와주세요
2018-05-09
100
7122열을 행으로 바꾸고 싶습니다. 도와주세요. [2]
왕초보왕초보
2018-04-19
156
7121동적 쿼리 질문입니다. [1]
도와주세요
2018-04-17
117
7120도움을 주시면 감사하겠습니다. [2]
고수님들
2018-04-12
128
7119행을 열로 어떻게 바꿀 수 있는지 여쭤 봅니다. [2]
왕초보왕초보
2018-04-11
143
7118컬럼별로 카운트 하는방법 알려주세요 [1]
민재영
2018-03-22
194
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2017 DSN, All rights reserved.
작업시간: 0.069초, 이곳 서비스는
	PostgreSQL v10.1로 자료를 관리합니다