안녕하세요 저는 지금 막 배우면서 일을 하는 사람입니다.
사수도 없이 해결해야 하는 상황인데 에러가 발생하고 그러면 해결 능력이 별로 없어서요....
질문을 드려봅니다.
SET @SQL = 'SELECT idx from admin_cal where cal_year = '+ convert(varchar(5),@cal_year) +' and
cal_month = '+ convert(varchar(3),@cal_month) +' and cal_date='+convert(varchar(3),@cal_date) +' and
id = "'+convert(varchar(20),@id)+'"'
print @SQL
위의 구문을 실행하면 다음과 같은 에러메세지가 나면서 이런 쿼리문이 찍힙니다.
열 이름 'admin'이(가) 잘못되었습니다.
SELECT idx from admin_cal where cal_year = 2014 and cal_month = 3 and cal_date=1 and id = "admin"
'admin'은 변수값으로 넘기는 값이고
DB는 필드 구성은
cal_year - varchar(5)
cal_month - varchar(3)
cal_date - varchar(3)
id - varchar(20)
입니다.
해서 쿼리문을
SELECT idx from admin_cal where cal_year = 2014 and cal_month = 3 and cal_date=1 and id = 'admin'
요렇게 바꿔서 실행하면 에러없이 결과값이 출력이 됩니다.
제가 찾아낸 부분이 에러의 원인이 맞는지 맞다면
SET @SQL = 'SELECT idx from admin_cal where cal_year = '+ convert(varchar(5),@cal_year) +' and
cal_month = '+ convert(varchar(3),@cal_month) +' and cal_date='+convert(varchar(3),@cal_date) +' and
id = "'+convert(varchar(20),@id)+'"'
이 구문을 수정해야 하는데 어떻게 수정하는 건지 잘 모르겠습니다.
열심히 학습하고 있습니다.
조언을 부탁드립니다.
감사합니다.
Comment 5
-
History
2014.03.21 11:06
-
이종엽
2014.03.21 11:25
답변 감사드립니다.
그렇잖아도 답변 주시기 저에 그 방식을 사용해봤었는데요.
형식이 일치하지 않습니다란 에러가 발생을 하더라고요....거참 뭐가 문제인지 감을 잡을 수가 없습니다.
-
이종엽
2014.03.21 11:37
추가로 한가지가 더 의심스러운 것은 사실 위의 코드들은 아무런 문제 없이 잘 돌아가던겁니다.
그런데 테이블을 DROP해다가 새로 만든다음부터 저런 에러가 발생하는 상황인데....뭐가 문제인지는 감을 못 잡겠네요
-
건우아빠
2014.03.21 11:40
id 부분에 쌍따옴표로 되어 있는듯 싱클따롬표로 표현을 하셔야 합니다.
특히 동적 쿼리인경우는 쿼리를 정리를 하시는게 좋습니다.
수정이 용이하도록
DECLARE @SQL VARCHAR(MAX)
DECLARE @cal_year VARCHAR(4) , @cal_month VARCHAR(2) , @cal_date VARCHAR(8) , @id VARCHAR(8)
SET @cal_year = '2014'
SET @cal_month = '03'
SET @cal_date = '20140316'
SET @id = '111111' ;
SET @SQL = '
SELECT idx
FROM admin_cal
WHERE cal_year = ''' + convert(varchar(5),@cal_year) + '''
AND cal_month = ''' + convert(varchar(3),@cal_month) + '''
AND cal_date = ''' + convert(varchar(3),@cal_date) + '''
AND id = ''' + convert(varchar(20),@id) + '''
'
print @SQL
-
이종엽
2014.03.21 12:23
감사합니다....변수마다 싱글쿼테이션으로 세개씩 모두 붙였더니 에러없이 실행이 되는군요. 감사합니다.
그리고 코드 정리에 대한 조언 또한 매우 감사합니다.
SET @SQL = 'SELECT idx from admin_cal where cal_year = '+ convert(varchar(5),@cal_year) +' and
cal_month = '+ convert(varchar(3),@cal_month) +' and cal_date='+convert(varchar(3),@cal_date) +' and
id = ''''+convert(varchar(20),@id)+''''