SQL 질문과 답변 게시판
ALTER proc [pertime1].[board_list]
@boardid int,
@findtype int,
@find varchar(50)
as
declare @sql varchar(500)
set @findtype = null
set @sql = 'SELECT A.no, A.seq, A.writer, A.title, a.cnt, A.thread, A.depth, A.pos, A.date, ISNULL(A.topyn,''N'') ''topyn'', '
set @sql = @sql + 'ISNULL(pwyn,''N'') ''pwyn'', B.path, B.file1, B.file2, '
set @sql = @sql + '(SELECT COUNT(*) FROM dbo.BOARD_COM WHERE no = A.no AND seq = A.seq ) ''comcnt' ' '
set @sql = @sql + ' FROM dbo.BOARD_LIST A LEFT OUTER JOIN dbo.BOARD_FILE B ON A.no = B.no AND A.seq = B.seq '
set @sql = @sql + ' WHERE A.no = ' + convert(int,@boardid)
exec(@sql)
저장프로시저 실행을 해서 값을 넣어보면
A.seq = B.seq WHERE A.no = '을(를) 데이터 형식 int(으)로 변환하지 못했습니다.
맨 마지막 줄에 boardid 값이 잘못됐다고 나오는데.. 도대체 원은을 모르겠어서 이렇게 질문 올립니다.
항상 웹페이지에서 쿼리문 작성하다 sql 내부에서 할라니 많이 어렵네요 ㅠㅠ 도와주세요~
p.s 그리고요.. 지금 저 쿼리문에서 테이블명 보시면 dbo.BOARD_LIST 이렇게 되어 있는데..dbo 안써주면 에러가 나서 저렇게 해주긴 했는
데... 원인이 뭔가요 ? ㅠㅠ 다른 프로시저는 그냥 테이블명만 써도 잘되는데 ㅠ ㅠ
초보 구제좀 해주세요
아 그렇군요~~ 님말로 했더니 정확히 잘되는지 다른거 작업도 해보고 봐야 알겠지만 실행시 오류는 안나네요 감사합니다 꾸벅
근데요.. A.no 이 컬럼의 데이타 타입은 int 인데 convert(VARCHAR,@boardid) 이렇게 문자열로 바꾸어서 같은지 검사를 해봐도
상관은 없는 건지요...
select * from board where id = 1 이거나 select * from board where id = '1' 이거나 실행은 잘되는걸로 알고는 있지만 ..
프로시저를 제가 잘몰라서.. ㅠㅠ 상관없는거겠죠?^^;;
어쨋든 해결 주셔서 감사합니다 꾸벅 꾸벅


convert(int,@boardid) 이부분을 오히려 convert(VARCHAR,@boardid)로 해야하지 않을까요?
set @sql = @sql + ' WHERE A.no = ' + convert(int,@boardid)
이부분은 어쨌든 문자 + 문자의 결합이 되니까요.
그리고 잘 안되시거든
set @sql = @sql + ' WHERE A.no = ''' + convert(VARCHAR,@boardid) + ''' '
이렇게 홑따옴표로 묶어보세요.
그럼 잘될지도 몰라요.