SQL 질문과 답변 게시판
Microsoft SQL Server와 관련된 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
글 수 5,172
안녕하십니까..
다름이 아니라 프로시져에서 동적 쿼이를 이용하여
변수에 sql문장을 담았습니다.
예를 들이
SET Sql = 'select * from '
if aaa = '1'
SET Sql = Sql + ' abc '
else
SET Sql = Sql + ' def '
exec (Sql )
이렇게 실행하여 결과를 봅니다.
여기에서 제가 궁금한것은 exec(sql)을 하기 전에
sql의 문법 오류가 있는지 체크를 하고 문법 오류가 있으면
exec(sql)을 하지 않고
문법 오류가 없을경우
exec(sql)을 실행하여 결과값을 보고 싶습니다.
방법이 없는지요???


실행하기전에는 구문 에러를 아시기 힘들듯 합니다..
구문에러를 비교하는 루틴이 있어야 하지 않을까요...
TRY ...CATCH 구문을 이용해서 구연하시면 비슷한 효과가 있지 않을까 생각 됩니다.
DECLARE @Sql varchar(max)
DECLARE @aaa char(1);
SET @Sql = 'select * from '
if @aaa = '1'
SET @Sql = @Sql + ' #test '
else
SET @Sql = @Sql + ' #test3 '
BEGIN TRY
EXEC (@Sql)
END TRY
BEGIN CATCH
SELECT ERROR_LINE() , ERROR_MESSAGE()
END CATCH;