2012-12-12 2 views
0

약간의 동적 SQL에 대한 사용자 정의 오류 메시지 문자열을 작성하려고합니다. 동적 SQL에 싸여하지 않는 경우는 다음과 같습니다동적 SQL - 까다로운 따옴표로 묶는 문자열

SET @message = 'EXCEPTION: Msg ' + COALESCE(CAST(ERROR_NUMBER() AS NVARCHAR(20)), '[NULL]') + ', ' + 
    'Level ' + COALESCE(CAST(ERROR_SEVERITY() AS NVARCHAR(20)), '[NULL]') + ', ' + 
    'State ' + COALESCE(CAST(ERROR_STATE() AS NVARCHAR(20)), '[NULL]') + ', ' + 
    'Procedure ' + COALESCE(@PROCEDURE_NAME, '[NULL]') + ', ' + 
    'Line ' + COALESCE(CAST(ERROR_LINE() AS NVARCHAR(20)), '[NULL]') + ', ' + 
    'Message: ' + COALESCE(ERROR_MESSAGE(), '[NULL]') ; 

이 동적 SQL에서 실행 때 그것은 다음과 같습니다 그래서 내가 아래로 따옴표를 얻는 데 문제가 있어요. 따옴표 다음에 배치하는 방법 :

EXEC @sql = 'BEGIN TRY 
... 
END TRY 
BEGIN CATCH 
DECLARE @PROCEDURE_NAME NVARCHAR(128); 
SET @PROCEDURE_NAME = OBJECT_NAME(@@PROCID); 

END CATCH 
'; 
+0

무엇이 문제입니까? –

+0

죄송합니다. 전체적으로 게시되지 않았습니다. 지금 편집을하려고하지만 어떤 이유로 그것이 나를 허용하지 않습니다. –

+0

기본적으로 동적 SQL에서 @message를 설정하려고하고 있는데 따옴표에 문제가 있습니다. –

답변

2

귀하의 메시지 코드가 잘 보인다.

그러나 @message를 동적 SQL에 포함하려면 모든 작은 따옴표를 두 번씩 사용해야합니다.

이것은 손으로하는 고통입니다. 그래서 다음과 같이합니다 :

  1. 당신이 한 것처럼 SQL을 작성하십시오.
  2. 선택하십시오.
  3. H를 입력하십시오 (또는 메뉴에서 선택하십시오). 작은 따옴표 (')를 검색 상자에 입력하고 두 개의 작은 따옴표 ('')를 바꿀 내용 상자에 입력하십시오.
  4. 선택 사항에있는 모든 것을 모두 바꿉니다.
+0

대단히 고마워요! 불완전한 질문에 대해 유감스럽게 생각합니다. 제출을 허용하지 않는 네트워크에 문제가 있습니다. 불완전한 제출을했는데 이제 게시물을 수정할 수 없습니다. –

+0

가끔 업로드하는 데 문제가 있습니다. Stackoverflow 또는 프록시 서버인지 확실하지 않습니다. 종종 이상한 방식으로 게시물을 편집하면 게시가 가능합니다. 그리고 나서 문제는 사라질 것 같습니다. –