bestsource

데이터베이스에 있는 모든 사용자 정의 함수의 SQL 목록

bestsource 2023. 7. 8. 11:01
반응형

데이터베이스에 있는 모든 사용자 정의 함수의 SQL 목록

데이터베이스 카탈로그의 모든 사용자 정의 함수에 대한 함수 정의를 출력하는 SQL 쿼리를 찾고 있습니다.

까지 찾아냈습니다.

SELECT OBJECT_DEFINITION (OBJECT_ID(N'dbo.UserFunctionName')) AS [Object Definition]

그리고.

SELECT ROUTINE_NAME FROM information_schema.routines WHERE routine_type = 'function'

하지만 ROINTINE_NAME 목록을 OBJECT_ID에 제공할 방법을 생각할 수도 없고 찾을 수도 없습니다.

여기서의 목적은 데이터베이스 변경 분석을 위해 데이터베이스에서 사용자 정의 함수 정의의 검색 가능한 텍스트입니다. 전체 SQL 프로시저나 목적의 도우미 프로그램과 같은 것이 더 쉬울 경우, 저는 그렇게 하고 게시하겠습니다.

SELECT name, definition, type_desc 
  FROM sys.sql_modules m 
INNER JOIN sys.objects o 
        ON m.object_id=o.object_id
WHERE type_desc like '%function%'

CTE를 사용할 수 있습니다.

with functions(routine_name) as 
  (SELECT ROUTINE_NAME FROM information_schema.routines WHERE routine_type = 'function')
select 
  OBJECT_DEFINITION(OBJECT_ID(routine_name)) AS [Object Definition] 
from 
  functions
SELECT O.name, M.definition, O.type_desc, O.type
FROM sys.sql_modules M
INNER JOIN sys.objects O ON M.object_id=O.object_id
WHERE O.type IN ('IF','TF','FN')

이 솔루션과 유사합니다.모든 저장 프로시저를 나열하는 쿼리

SELECT * 
  FROM DIDS0100.INFORMATION_SCHEMA.ROUTINES
 WHERE ROUTINE_TYPE = 'FUNCTION' 
    AND LEFT(ROUTINE_NAME, 3) NOT IN ('fn_')

다음은 스키마가 포함된 버전이며 불필요한 스칼라 값 함수를 대량으로 삭제할 수 있도록 포맷된 버전입니다.

SELECT ('DROP FUNCTION [' + SCHEMA_NAME(o.schema_id) + '].[' + o.name + ']') AS ObjectName 
FROM sys.sql_modules m INNER JOIN sys.objects o ON m.object_id = o.object_id 
WHERE o.type_desc = 'SQL_SCALAR_FUNCTION' 
ORDER BY ObjectName

모든 SQL Server 저장 프로시저 및 함수에 대한 매개 변수 목록 생성

SELECT 
   SCHEMA_NAME(SCHEMA_ID) AS [Schema]
  ,SO.name AS [ObjectName]             
  ,SO.Type_Desc AS [ObjectType (UDF/SP)]
  ,P.parameter_id AS [ParameterID]
  ,P.name AS [ParameterName]
  ,TYPE_NAME(P.user_type_id) AS [ParameterDataType]
  ,P.max_length AS [ParameterMaxBytes]
  ,P.is_output AS [IsOutPutParameter]
FROM sys.objects AS SO
INNER JOIN sys.parameters AS P ON SO.OBJECT_ID = P.OBJECT_ID
ORDER BY [Schema], SO.name, P.parameter_id

언급URL : https://stackoverflow.com/questions/15420235/sql-list-of-all-the-user-defined-functions-in-a-database

반응형