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 4101 게시물 읽기
No. 4101
변수를 테이블 명으로 입력시의 문제
작성자
서정호(sichiro)
작성일
2008-03-07 17:56
조회수
4,595

DECLARE @existColumn  INT, @tableName  VARCHAR(100), @szID  VARCHAR(100)

SET  @tableName = 'TEST_TABLE'
SET  @szID = '1'

SELECT  @existColumn = szID
FROM @tableName
WHERE szID = @szID

위와같이 SQL 문을 작성 한 경우 아래와 같은 에러메시지가 발생합니다.
서버: 메시지 137, 수준 15, 상태 2, 줄 10
'@tableName' 변수를 선언해야 합니다.

그래서 execute 문을 이용해서 실행해보려고 아래와 같이 변경해보았으나

 왜 생기는 문제 일까요??? 그리고 어떻게 하면 해결 할 수 있는지 조언 바랍니다. 

감사합니다. ^^

DECLARE @existColumn  VARCHAR(20), @tableName  VARCHAR(100), @szID  VARCHAR(20)

SET  @tableName  = 'RANK_GENESIS3_P1_EP1'
SET  @szID   = '0'

EXECUTE (
 'SELECT ' + @existColumn + '= szID FROM ' + @tableName + ' WHERE szID = ' + @szID
)

서버: 메시지 170, 수준 15, 상태 1, 줄 1
줄 1: '=' 근처의 구문이 잘못되었습니다.

이런 에러메시지가 나오네요...

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

다른건 잘 모르겠구요. 아래쪽 '='근처의 구문이 잘못되었다는건 SELECT절 앞에 = 을 사용하셔서 그런거 같은데요. 
EXECUTE를 해보면 @existColumn에 값이 없다면 SELECT = szID FROM..으로 될테니까요. ^^;

주작천공님이 2008-03-10 17:05에 작성한 댓글입니다. Edit

DECLARE @existColumn  VARCHAR(20)
     , @tableName  VARCHAR(100)
     , @szID  VARCHAR(20)
     ,@QUERY VARCHAR(1000)   /* 쿼리를 한방에 보내는 방식이 좋을 것 같습니다.*/

SET  @tableName  = 'RANK_GENESIS3_P1_EP1'
SET  @szID   = '0'

SET @QUERY = 'SEELCT '+ @existColumn + '= szID FROM '+ @tableName + ' WHERE szID = ' + @szID+';'

EXECUTE (@QUERY )


님과 같이 하면 에러가 발생을 할것입니다.(이유는 한번 검색을 해보시면 될듯합니다.)

@QUERY문을 VARCHAR로 모으고 모아 한방에 보내면 됩니다.

VARCHAR는 5000까지 지원하니 넉넉하시라 생각합니다.

@QUERY를 WHILE / FOR문으로 컬럼을 변수로 / 테이블을 변수로.... 단 변수의 내용을 텍스트로
변환 후 저장하는것을 볼것입니다.

SELECT @QUERY하시면 알겁니다.

혹 틀린 답변이 있다면....혼 내주세요..

심재범님이 2008-03-14 15:57에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
4105로컬로 데이터 붓기 [1]
mssql
2008-03-11
3828
4104sql2005 에서 sql2000데이타 fetch 문제
고형석
2008-03-10
3350
4103DTS 에러 문의
고형석
2008-03-10
7013
4101변수를 테이블 명으로 입력시의 문제 [2]
서정호
2008-03-07
4595
4100Ms-Access에서 기존 테이블에 Primary Key를 변경하는 문제..
김종근
2008-03-07
3699
4099함수 문제 입니다. [1]
함수
2008-03-07
3684
4098문자를 숫자로 변환시에.. [1]
김희정
2008-03-06
5237
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다