때로는 하나 이상의 슈퍼 롱 (때때로 어리석은 긴 문자열)을 가진 SQL 스크립트가 있습니다. 일반적으로 이들은 VARBINARY
파일 / 어셈블리를 나타내는 리터럴 / 상수이지만 때로는 텍스트입니다.
실제로 긴 문자열의 주요 문제점은 일부 텍스트 편집기가 문자열을 잘 처리하지 못한다는 것입니다. 예를 들어, 나는 문장 VARBINARY
에서 사용 하는 리터럴을 가지고 있으며 CREATE ASSEMBLY [AssemblyName] FROM 0x....
어셈블리 자체의 크기는 1MB 이상이며 텍스트 바이트에서 2 백만 자 이상에 해당합니다. 각 바이트에는 2 개의 문자가 16 진수 표기법으로 표시되어야하기 때문입니다 (예 0x1F
: a 1
및 a F
). SSMS (SQL Server Management Studio)는이 작업을 제대로 처리하지 못하고 해당 줄을 스크롤하려고하면 몇 초 동안 중단됩니다. 실제로 일부 버전 (여전히 이러한 상황이 발생하는지 확실하지 않은 경우)에는 특정 길이에 대해 최소한 한 줄 이상의 스크립트를 열 때 긴 줄에 대한 경고가 표시됩니다.
두 번째 문제는 자동 줄 바꿈을 사용하지 않고 편집기에서 사용하거나 온라인으로 게시 할 때 서식이 복잡하다는 것입니다. 여기서 문제는 가로 스크롤 막대의 슬라이더가 매우 좁아서 조금만 움직여도 길지 않은 텍스트가 보이지 않게 스크롤된다는 것입니다.
이제 T-SQL은 줄 바꿈 또는 세미콜론으로 명령을 종료하지 않습니다 (SQL Server 2005부터 세미콜론이 선호 / 권장되지만). 따라서 SQL Server는 종료 시점을 알 수 있도록 각 명령문을 구문 분석하는 방법을 알고 있기 때문에 긴 행을 여러 행으로 나누고 newline/ carriage-return+ 만으로 분리하는 line-feed것은 무리가없는 것처럼 보입니다. 그러나 어느 경우에도 작동하지 않습니다.
PRINT 'Line1
Line2';
"메시지"탭에서 다음을 반환합니다.
Line1
Line2
그리고 개행이 리터럴 / 상수 내에 있으므로 충분합니다. 그러나이 작업을 수행해 VARBINARY
도 효과가 없습니다.
PRINT 0x1234
5678;
나에게 오류를 준다.