อาร์กิวเมนต์แรกของโพรซีเดอร์ที่เก็บระบบsp_helptext
คือ:
[
@objname
= ] 'name'
เป็นชื่อที่ผ่านการรับรองหรือไม่ผ่านการรับรองของวัตถุที่กำหนดโดยผู้ใช้กำหนดขอบเขตด้วยสกีมา จำเป็นต้องใช้เครื่องหมายใบเสนอราคาเฉพาะถ้ามีการระบุวัตถุที่ผ่านการรับรอง หากระบุชื่อแบบเต็มรวมถึงชื่อฐานข้อมูลชื่อฐานข้อมูลต้องเป็นชื่อของฐานข้อมูลปัจจุบัน วัตถุต้องอยู่ในฐานข้อมูลปัจจุบัน ชื่อคือnvarchar(776)
ไม่มีค่าเริ่มต้น
นอกจากนี้เอกสารสำหรับสถานะตัวคั่น (ฐานข้อมูล Engine):
การใช้ตัวระบุเป็นพารามิเตอร์ใน SQL Server
ระบบที่จัดเก็บขั้นตอนฟังก์ชั่นและคำสั่ง DBCC ใช้ชื่อวัตถุเป็นพารามิเตอร์ พารามิเตอร์เหล่านี้บางตัวยอมรับชื่อวัตถุหลายส่วนในขณะที่คนอื่นยอมรับเฉพาะชื่อส่วนเดียวเท่านั้น คาดว่าชื่อส่วนเดียวหรือหลายส่วนจะเป็นตัวกำหนดว่าพารามิเตอร์จะแยกวิเคราะห์และใช้ภายในโดย SQL Server หรือไม่
ชื่อ
พารามิเตอร์แบบส่วนเดียวหากพารามิเตอร์เป็นตัวระบุส่วนเดียวชื่อสามารถระบุได้ด้วยวิธีการดังต่อไปนี้:
- ไม่มีเครื่องหมายคำพูดหรือตัวคั่น
- อยู่ในเครื่องหมายคำพูดเดี่ยว
- อยู่ในเครื่องหมายคำพูดคู่
- ล้อมรอบด้วยวงเล็บ
ชื่อพารามิเตอร์
หลายส่วนชื่อหลายส่วนเป็นชื่อที่มีคุณสมบัติซึ่งรวมถึงฐานข้อมูลหรือชื่อสคีมาและชื่อวัตถุ เมื่อชื่อ multipart ถูกใช้เป็นพารามิเตอร์ SQL Server ต้องการให้สตริงสมบูรณ์ที่ประกอบเป็นชื่อ multipart จะอยู่ในชุดของเครื่องหมายคำพูดเดี่ยว
อาร์กิวเมนต์แรกที่sp_helptext
ยอมรับทั้งชื่อวัตถุส่วนเดียว (ไม่ผ่านการรับรอง) และหลายส่วน (ผ่านการรับรอง)
หากตัวแยกวิเคราะห์ T-SQL ตีความรายการหลังจากsp_helptext
เป็นชื่อส่วนเดียว (ตามด้วยสัญลักษณ์แสดงหัวข้อย่อยสี่จุดด้านบน) ชื่อผลลัพธ์จะถูกส่งผ่านเป็นค่าอาร์กิวเมนต์ (ชนิดสตริง) ที่คาดไว้โดยขั้นตอน
เมื่อ parser เห็นว่าเป็นชื่อหลายส่วนข้อความจะต้องล้อมรอบด้วยเครื่องหมายอัญประกาศเดี่ยวตามที่ระบุไว้
คุณสมบัติหลักของชื่อหลายส่วนคือ.
ตัวคั่น (นอกตัวคั่นใด ๆ )
ตัวอย่างจากคำถามเหล่านี้แปลเป็นชื่อส่วนเดียวสำเร็จแล้ว:
myproc - ส่วนเดียว (ไม่มีเครื่องหมายคำพูดหรือตัวคั่น - bullet # 1)
[myproc] - ส่วนเดียว (ในวงเล็บ - กระสุน # 4)
'myproc' - ส่วนเดียว (ในเครื่องหมายคำพูดเดี่ยว - กระสุน # 2)
'dbo.myproc' - หลายส่วนด้วยเครื่องหมายอัญประกาศเดี่ยวที่ต้องการ
[dbo.myproc] - ส่วนเดียว (ในวงเล็บ - กระสุน # 4)
ตัวอย่างสองคำถามสุดท้ายจากคำถามถูกแยกวิเคราะห์เป็นชื่อพารามิเตอร์หลายส่วน (เนื่องจาก.
ตัวคั่นที่เปิดเผย) พวกเขาสร้างข้อผิดพลาดเนื่องจากไม่มีเครื่องหมายคำพูดเดี่ยวล้อมรอบ:
dbo.myproc - หลายส่วนโดยไม่ต้องใส่เครื่องหมายคำพูดเดี่ยว
[dbo]. [myproc] - หลายส่วนโดยไม่มีเครื่องหมายคำพูดเดี่ยวที่จำเป็น
ตัวอย่างพิเศษนี้โดยใช้เครื่องหมายคำพูดคู่สำเร็จแล้ว:
"dbo.myproc" - ส่วนเดียว (ในเครื่องหมายคำพูดคู่ - สัญลักษณ์หัวข้อ # 3)
โปรดทราบว่าสามารถตีความได้สำเร็จ (สำหรับค่าพารามิเตอร์โพรซีเดอร์) เป็นชื่อส่วนที่ถูกต้องแต่โค้ดโพรซีเดอร์สามารถตีความสตริง (หลายส่วน) ที่ได้รับความยืดหยุ่น (โดยใช้PARSENAME
และOBJECTID
)
QUOTED_IDENTIFIER
เป็นจุดสุดท้ายที่สนใจทราบว่าการใช้เครื่องหมายอัญประกาศที่นี่ไม่ได้ขึ้นอยู่กับการตั้งค่าของ