นับฟังก์ชันที่สร้างโดยผู้ใช้เซิร์ฟเวอร์ SQL ตามประเภท

ฉันสามารถนับฟังก์ชันที่ผู้ใช้สร้างขึ้นทั้งหมดใน SQL Server ได้โดยใช้

SELECT COUNT(*)
FROM information_schema.routines
WHERE routine_type = 'FUNCTION'

แต่ฟังก์ชันนี้จะส่งคืนฟังก์ชันทั้งหมด ไม่ว่าจะเป็นฟังก์ชันค่าสเกลาร์ ฟังก์ชันอินไลน์ หรือฟังก์ชันค่าตาราง

มีวิธีรับจำนวนเฉพาะสำหรับประเภทของฟังก์ชันหรือไม่? เช่น. นับฟังก์ชันอินไลน์เท่านั้น?


person Tyro    schedule 02.07.2020    source แหล่งที่มา
comment
and DATA_TYPE = 'TABLE'จะพาคุณไปที่นั่น   -  person Dale K    schedule 02.07.2020
comment
มีประโยชน์มาก ฉันสามารถหาฟังก์ชันอินไลน์ทั้งหมดและฟังก์ชันที่มีค่าของตารางได้ แล้วลบออกจากฟังก์ชันทั้งหมดเพื่อให้ได้สเกลาร์ แต่มีวิธีแยกตารางที่มีค่าและตารางอินไลน์ออกหรือไม่   -  person Tyro    schedule 02.07.2020


คำตอบ (1)


ความแตกต่างที่คุณตามหานี้มีความเฉพาะเจาะจงกับ SQL Server และอาจไม่ครอบคลุมโดยมาตรฐาน information_schema คุณต้องดูมุมมองของระบบเพื่อ:

select o.type_desc, count(*)
from sys.objects o
where o.type in ('AF', 'FN', 'FS', 'FT', 'IF', 'TF')
group by o.type_desc
order by o.type_desc;

ขึ้นอยู่กับเวอร์ชันของ SQL Server ที่คุณใช้ รายการประเภทออบเจ็กต์ที่พร้อมใช้งานอาจแตกต่างกัน ปรึกษากับเอกสารประกอบ สำหรับเวอร์ชันของคุณเกี่ยวกับเรื่องนั้น

person Roger Wolf    schedule 02.07.2020