큰 따옴표를 문자열 구분 기호로 사용하는 SQL 2008 T-SQL proc가 발생하는 것에 놀랐습니다. 예 :큰 따옴표를 사용하여 문자열을 구분할 수 있습니까?
DECLARE @SqlStmt AS VarChar(5000)
SET @SqlStmt = "ok"
PRINT @SqlStmt
나는 그것이 허용되지 않는다고 생각했습니다. 아포스트로피 만 사용할 수 있다고 생각했습니다.
T-SQL은 Javascript와 같이 유연하여 하나의 명령문에서 두 개를 혼합하려는 경우 구분 기호로 사용할 수 있다고 생각하여 동적 SQL을 생성하기 위해 저장된 procs 중 하나에서 동일한 작업을 시도했습니다. 그것은 진드기를 포함했다. 스크립트가 컴파일되지 않는다는 것에 놀랐습니다. X가 인용 문자열의 내용 인 "INVALID COLUMN [X]"오류가 발생했습니다.
그래서 위에서 보았던 정확한 SQL을 컴파일하고 실행하고 "OK"를 인쇄 할 때까지는 가장 간단한 구성 요소를 제거했습니다.
이제 진짜 놀라운 부분 :
내가 내 클립 보드에 위의 T-SQL 스크립트를 배치, 동일한 연결을 사용하여 새 쿼리 창을 열려면 컨트롤 + N을 실행하고 새 쿼리 창에 위의 스크립트를 붙여 나는 새로운 창에 다음과 같은 오류를 얻는 것을보고 충격을 받았다 :
Msg 207, Level 16, State 1, Line 3
Invalid column name 'ok'.
설명 업데이트 :
은 분명히 내가 원래 스크립트에서 SET의 QUOTED_IDENTIFIER를 제거했지만, 나는 이미 그것을 실행했다원래 쿼리 창 있지만 옵션이 여전히 유효했다. 새 쿼리 창을 만들 때이 옵션은 기본적으로 꺼져 있습니다.
답변 해 주셔서 감사합니다.
그랬습니다. 감사. 시스템이 나를 허용하자마자 대답을 받아 들일 것입니다 (바보 같은 편집, IMO) – ChadD