시스템 저장 프로 시저에 대한 첫 번째 인수 sp_helptext
는 다음과 같습니다.
[
@objname
= ] 'name'
사용자 정의 된 스키마 범위 개체의 정규화 된 이름이거나 정규화되지 않은 이름입니다. 규정 된 개체가 지정된 경우에만 따옴표가 필요합니다. 데이터베이스 이름을 포함하여 완전한 이름이 제공되면 데이터베이스 이름은 현재 데이터베이스의 이름이어야합니다. 오브젝트는 현재 데이터베이스에 있어야합니다. name은 nvarchar(776)
기본값 이며 기본값은 없습니다.
또한 구분 식별자 (데이터베이스 엔진)에 대한 설명서는 다음과 같습니다.
SQL Server에서 식별자를 매개 변수로 사용
많은 시스템 저장 프로 시저, 함수 및 DBCC 문은 개체 이름을 매개 변수로 사용합니다. 이러한 매개 변수 중 일부는 다중 부분 객체 이름을 허용하는 반면 다른 매개 변수는 단일 부분 이름 만 허용합니다. 단일 부분 또는 다중 부분 이름이 필요한지 여부는 SQL Server에서 매개 변수를 구문 분석하고 내부적으로 사용하는 방법을 결정합니다.
단일 부품 매개 변수 이름
매개 변수가 단일 부품 식별자 인 경우 다음과 같은 방법으로 이름을 지정할 수 있습니다.
- 따옴표 나 구분 기호없이
- 작은 따옴표로 묶음
- 큰 따옴표로 묶음
- 괄호로 묶음
멀티 파트 매개 변수 이름
멀티 파트 이름은 데이터베이스 또는 스키마 이름과 객체 이름을 포함하는 정규화 된 이름입니다. 멀티 파트 이름을 매개 변수로 사용하는 경우 SQL Server에서는 멀티 파트 이름을 구성하는 완전한 문자열을 작은 따옴표로 묶어야합니다.
sp_helptext
단일 부분 (정규화되지 않은) 및 다중 부분 (정규화 된) 객체 이름을 모두 허용 하는 첫 번째 인수 입니다.
T-SQL 구문 분석기가 항목을 단일 부분 이름sp_helptext
으로 해석하면 (위의 네 가지 글 머리 기호에 따라) 결과 이름이 프로 시저에서 예상되는 (문자열 유형) 인수 값으로 전달됩니다.
파서가이를 multipart name 으로 볼 때, 텍스트는 명시된 바와 같이 작은 따옴표로 묶어야합니다.
멀티 파트 이름의 주요 기능은 .
구분 기호 (구분 기호 외부)입니다.
이 질문의 예는 단일 부분 이름으로 해석됩니다.
myproc-단일 부분 (따옴표 또는 구분 기호없이-글 머리 기호 # 1)
[myproc]-단일 부분 (괄호 안에-글 머리 기호 # 4)
'myproc'-단일 부분 (작은 인용 부호-글 머리 기호 # 2)
'dbo.myproc'- 작은 따옴표가 필요한 멀티 파트
[dbo.myproc]-단일 부분 (괄호 안에-글 머리 기호 # 4)
질문의 마지막 두 예제는 모두 다중 부분 매개 변수 이름으로 구문 분석됩니다 (노출 된 .
구분 기호 로 인해 ). 필요한 작은 따옴표가 없기 때문에 오류가 발생합니다.
dbo.myproc-작은 따옴표가없는 멀티 파트
[dbo]. [myproc]-작은 따옴표가없는 여러 부분
큰 따옴표를 사용한이 추가 예는 다음과 같습니다.
"dbo.myproc"-단일 부분 (큰 따옴표로 묶음-글 머리 기호 # 3)
프로 시저 매개 변수 값에 대해 유효한 단일 부품 이름으로 해석되지만 프로 시저 코드는 유연하게 수신되는 (다중 부분) 문자열을 해석 할 수 있습니다 ( PARSENAME
및 사용 OBJECTID
).
마지막으로 관심을 끌기 위해 여기에서 큰 따옴표를 사용하는 것은의 설정에 의존하지 않습니다 QUOTED_IDENTIFIER
.