यह आलेख SQL सर्वर डेटाबेस में उपयोगकर्ता-परिभाषित फ़ंक्शन की सूची वापस करने के दो तरीके प्रस्तुत करता है।
विकल्प 1 - रूटीन सूचना स्कीमा दृश्य
आप ROUTINES का उपयोग कर सकते हैं डेटाबेस में सभी उपयोगकर्ता-परिभाषित कार्यों की सूची प्राप्त करने के लिए सूचना स्कीमा दृश्य।
यह दृश्य संग्रहीत कार्यविधियों के साथ-साथ फ़ंक्शन भी लौटाता है, इसलिए आपको एक WHERE जोड़ना होगा इसे केवल कार्यों तक सीमित करने के लिए खंड।
USE Music; SELECT ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE, DATA_TYPE FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'FUNCTION';
परिणाम:
+------------------+-------------------------+----------------+-------------+ | ROUTINE_SCHEMA | ROUTINE_NAME | ROUTINE_TYPE | DATA_TYPE | |------------------+-------------------------+----------------+-------------| | dbo | ISOweek | FUNCTION | int | | dbo | ufn_AlbumsByGenre | FUNCTION | TABLE | | dbo | ufn_AlbumsByArtist | FUNCTION | TABLE | | dbo | ufn_AlbumsByGenre_MSTVF | FUNCTION | TABLE | +------------------+-------------------------+----------------+-------------+
फ़ंक्शन की परिभाषा लौटाएं
इस दृश्य में एक ROUTINE_DEFINITION भी है कॉलम, ताकि यदि आवश्यक हो तो आप आसानी से प्रत्येक फ़ंक्शन की परिभाषा वापस कर सकते हैं।
SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'FUNCTION';
विकल्प 2 - sys.objects सिस्टम कैटलॉग व्यू
फ़ंक्शन की सूची वापस करने का दूसरा तरीका sys.objects . को क्वेरी करना है सिस्टम कैटलॉग व्यू।
SELECT
SCHEMA_NAME(schema_id) AS [Schema],
name,
type_desc
FROM sys.objects
WHERE type IN ('AF','FN','FS','FT','IF','TF');
परिणाम:
+----------+-------------------------+----------------------------------+ | Schema | name | type_desc | |----------+-------------------------+----------------------------------| | dbo | ISOweek | SQL_SCALAR_FUNCTION | | dbo | ufn_AlbumsByGenre | SQL_INLINE_TABLE_VALUED_FUNCTION | | dbo | ufn_AlbumsByArtist | SQL_INLINE_TABLE_VALUED_FUNCTION | | dbo | ufn_AlbumsByGenre_MSTVF | SQL_TABLE_VALUED_FUNCTION | +----------+-------------------------+----------------------------------+
यहाँ मैंने WHERE . में सभी प्रकार्यों को स्पष्ट रूप से शामिल किया है खंड।
यदि आप एक तदर्थ क्वेरी चला रहे हैं, लेकिन आपको सभी प्रकार याद नहीं हैं, तो आप कुछ ऐसा कर सकते हैं:
SELECT SCHEMA_NAME(schema_id) AS [Schema], name, type_desc FROM sys.objects WHERE type_desc LIKE '%FUNCTION';
या यह:
SELECT SCHEMA_NAME(schema_id) AS [Schema], name, type_desc FROM sys.objects WHERE RIGHT(type_desc, 8) = 'FUNCTION';
फ़ंक्शन की परिभाषा लौटाएं
sys.objects दृश्य में ऑब्जेक्ट की परिभाषा के लिए एक कॉलम शामिल नहीं है। यदि आप प्रत्येक फ़ंक्शन की परिभाषा वापस करना चाहते हैं, तो आप इसे sys.sql_modules के साथ जोड़ सकते हैं सिस्टम दृश्य।
उदाहरण:
SELECT definition
FROM sys.objects o
INNER JOIN sys.sql_modules m
ON o.object_id = m.object_id
WHERE type IN ('AF','FN','FS','FT','IF','TF');