2014-05-22 13 views
5

Trong chế độ xem INFORMATION_SCHEMA.ROUTINES, ROUTINE_NAME và SPECIFIC_NAME có mặt. Theo số MSDN chúng giống nhau. Họ có chỉ cho khả năng tương thích ngược của một số loại? Nếu không phải lý do tại sao các trường dư thừa được bao gồm trong chế độ xem?Sự khác nhau giữa ROUTINE_NAME và SPECIFIC_NAME là gì?

Trả lời

8

Chuẩn ANSI SQL không cấm quá tải, tức là hai đối tượng có cùng tên. SPECIFIC_NAME là tên duy nhất cho mô-đun bị quá tải, trong khi ROUTINE_NAME không được đảm bảo là duy nhất. Điều này cũng đúng ở bất cứ nơi nào bạn thấy SPECIFIC, chẳng hạn như SPECIFIC_CATALOG và SPECIFIC_SCHEMA.

T-SQL không có khả năng này, vì vậy SPECIFIC_NAME và ROUTINE_NAME luôn giống nhau.

Việc triển khai SQL duy nhất mà tôi biết có hỗ trợ tính năng này là PostgreSQL (xem tại đây: http://www.postgresql.org/docs/current/interactive/infoschema-routines.html), nhưng có thể tôi đã nhầm lẫn. Oracle của tôi bị gỉ. Tôi không chắc chắn cách SPECIFIC_CATALOG hoạt động, mặc dù tôi cho rằng nó có thể bao gồm một số thông tin về đường dẫn hoặc máy chủ, để phân biệt giữa hai cơ sở dữ liệu khác nhau có cùng tên.

Các vấn đề liên quan