Sistem saklı yordamının ilk argümanı sp_helptext
:
[
@objname
= ] 'name'
Kullanıcı tanımlı, şema kapsamındaki bir nesnenin nitelikli veya niteliksiz adıdır. Tırnak işaretleri yalnızca nitelikli bir nesne belirtilmişse gereklidir. Bir veritabanı adı da dahil olmak üzere tam bir ad verilirse, veritabanı adı geçerli veritabanının adı olmalıdır. Nesnenin geçerli veritabanında olması gerekir. adı, nvarchar(776)
varsayılan yok.
Ayrıca, Sınırlandırılmış Tanımlayıcılar (Veritabanı Altyapısı) dokümantasyonu şunları belirtir:
SQL Server'da Tanımlayıcıları Parametreler Olarak Kullanma
Birçok sistem saklı yordamı, işlevi ve DBCC deyimi nesne adlarını parametre olarak alır. Bu parametrelerin bazıları çok parçalı nesne adlarını kabul ederken bazıları yalnızca tek parçalı adları kabul eder. Tek parçalı veya çok parçalı bir adın beklenip beklenmeyeceği, bir parametrenin SQL Server tarafından dahili olarak nasıl ayrıştırılacağını ve kullanılacağını belirler.
Tek parçalı Parametre Adları Parametre
tek parçalı bir tanımlayıcıysa, ad aşağıdaki şekillerde belirtilebilir:
- Tırnak işaretleri veya sınırlayıcılar olmadan
- Tek tırnak içine alınır
- Çift tırnak içine alınır
- Parantez içinde
Çok Parçalı Parametre Adları
Çok parçalı adlar, veritabanı veya şema adını ve ayrıca nesne adını içeren nitelikli adlardır. Çok parçalı bir ad parametre olarak kullanıldığında, SQL Server çok parçalı adı oluşturan tam dizenin tek tırnak işareti içine alınmasını gerektirir.
sp_helptext
Hem tek parça (kalifiye olmayan) hem de çok parçalı (nitelikli) nesne adlarını kabul eden ilk argüman .
Sonra T-SQL çözümleyici, yorumlanması et Eğer sp_helptext
bir şekilde tek parça adı (dört madde noktalarının üzerinde uygun olarak) ve elde edilen adı prosedürle beklenen (string türü) bağımsız değişken değer olarak geçirilir.
Ayrıştırıcı bunu çok parçalı bir ad olarak gördüğünde , metnin belirtildiği gibi tek tırnak işareti içine alınması gerekir.
Çok parçalı bir adın temel özelliği bir .
ayırıcıdır (tüm sınırlayıcıların dışında).
Sorudaki bu örnekler başarıyla tek bölümlü adlar olarak yorumlanmıştır:
myproc - tek parça (tırnak işaretleri veya sınırlayıcılar olmadan - madde işareti # 1)
[myproc] - tek parça (parantez içinde - madde işareti # 4)
'myproc' - tek parça (tek tırnak içinde - madde işareti # 2)
'dbo.myproc' - gerekli tek tırnak işaretleriyle çok parçalı
[dbo.myproc] - tek parça (parantez içinde - madde işareti # 4)
Sorunun son iki örneğinin her ikisi de çok parçalı parametre adları olarak ayrıştırılır (açıktaki .
ayırıcıdan dolayı ). Bir hata üretirler çünkü gerekli tek tırnak işaretlerini içermezler:
dbo.myproc - gerekli tek tırnak işareti olmadan çok parçalı
[dbo]. [myproc] - gerekli tek tırnak işareti olmadan çok parçalı
Çift tırnak işareti kullanan bu ekstra örnek başarılı:
"dbo.myproc" - tek parça (çift tırnak içinde - madde işareti # 3)
Başarılı bir şekilde (yordam parametre değeri için) geçerli bir tek parça adı olarak yorumlandığını, ancak yordam kodunun aldığı (çok parçalı) dizeyi esnek bir şekilde ( PARSENAME
ve kullanarak) yorumlayabildiğini unutmayın OBJECTID
.
Son bir ilgi noktası olarak, burada çift tırnak işareti kullanmanın ayarına bağlı olmadığını unutmayın QUOTED_IDENTIFIER
.