본문 바로가기
DataBase/MsSql

MSSQL 함수(Function) 호출 방법 및 내용 검색

by 아우럼 2024. 5. 30.
반응형

MSSQL에서 함수를 생성했으면 함수를 호출해서 값을 반환 값을 확인할 수 있고 작성한 내용을 검색하는 방법에 대한 설명입니다.

 

함수(Function) 호출 방법 및 내용검색 설명

함수(Function) 호출 방법.

  • 스칼라함수는 단일 값을 반환하므로 SELECT 절에서 함수를 호출할 수 있습니다.
  • 테이블 반환 함수는 결과 집합을 반환하므로 From 절에 사용할 수 있습니다.
  • 이름에서 알 수 있듯이 테이블 형태로 반환되므로 조인도 가능하고 WHERE 조건도 사용할 수 있습니다.

함수(Function) 내용검색 설명.

  • 생성한 함수의 내용을 확인할 수 있도록 MSSQL은 함수 내용검색 기능을 지원합니다.
  • SQL Server Management Studio (SSMS)를 이용해서도 내용 확인이 가능합니다.
  • PROCEDURE에서 문자열 검색하고 비슷합니다.

 

함수(Function) 호출 방법

스칼라함수 생성 및 호출 방법.

  • 스칼라함수 사용 예제.
CREATE FUNCTION dbo.AurumGuide_scalarFuncCall (
	@PARAM1 varchar(10),
	@PARAM2 varchar(10) 
)
RETURNS varchar(100)
AS
BEGIN
	declare @returnStr varchar(100);
	set @returnStr  =   @PARAM1 + @PARAM2;
	RETURN @returnStr
END;
go
-- EXCUTE 
select dbo.AurumGuide_scalarFuncCall('Aurum','Guide');

 

테이블 반환 함수 생성 및 호출 방법.

  • 테이블 반환 함수 사용 예제.
-- 테이블 반환 함수 생성 및 호출 방법. 
-- 1. CREATE TABLE   
DROP TABLE IF EXISTS AurumGuideForTableFuncCall;
CREATE TABLE AurumGuideForTableFuncCall(
    UserId int,
    UserNm varchar(255) NOT NULL 
); 

INSERT INTO dbo.AurumGuideForTableFuncCall(UserId,UserNm) 
VALUES (272, N'Ken')
      ,(273, N'Brian')
      ,(274, N'Stephen')
      ,(275, N'Michael')
      ,(376, N'Linda');

GO
-- 테이블 반환 함수
-- DROP FUNCTION fn_AurumGuide_TableFuncCall;
CREATE FUNCTION fn_AurumGuide_TableFuncCall(@UserNm varchar(255))
RETURNS @Return_AurumGuide  TABLE
(
	UserId int,
	UserNm varchar(255)    NULL 
)
AS
BEGIN
	INSERT @Return_AurumGuide
	SELECT *
	FROM AurumGuideForTableFuncCall af	 
	WHERE af.UserNm like '%' +  @UserNm  +'%';
	RETURN;
END;

-- EXCUTE
select * 
from fn_AurumGuide_TableFuncCall('a') fnCall
where fnCall.UserId like '%27%'
;

 

함수(Function) 내용검색 방법

내용 검색 흐름도.

함수(Function) 내용 검색 흐름도 입니다.
함수(Function) 내용 검색 흐름도 입니다.

sp_helptext 명령어 사용법.

  • 한 개의 Function 내용검색을 위해서 sp_helptext 명령어를 사용합니다.
EXEC sp_helptext 'fn_AurumGuide_TableFuncCall';

syscomments의 TEXT 칼럼 사용.

  • syscomments는 시스템 View이며, text 칼럼을 통해서 Function 내용을 검색할 수 있습니다.
SELECT type, name, text
  FROM syscomments S1
 JOIN sys.objects S2 
  ON S1.id = S2.object_id
WHERE S2.type IN ('FN','TF')
  AND S1.text LIKE '%AurumGuide%';

INFORMATION_SCHEMA.ROUTINES 사용하여 내용검색.

  • INFORMATION_SCHEMA.ROUTINES 스키마 정보를 이용해서도 가능합니다.
SELECT ROUTINE_NAME, ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'FUNCTION'
  AND ROUTINE_DEFINITION  LIKE '%fn_AurumGuide%'
ORDER BY ROUTINE_NAME;

sys.objects을 이용해서 함수 내용검색.

  • sys.objects는 함수, 프로시저, 트리거 거의 모든 내용검색이 가능합니다.
SELECT OBJECT_NAME(object_id)  FUNC_NAME
      ,OBJECT_DEFINITION(object_id) FUNC_TEXT
 FROM sys.objects
 WHERE  OBJECT_NAME(object_id) = 'fn_AurumGuide_TableFuncCall'

sys.sql_modules을 사용하여 Function 내용검색.

  • Function, 프로시저, 트리거, 함수등 모든 내용검색을 할 때 주로 사용합니다.
SELECT OBJECT_NAME(OBJECT_ID) AS  FUNC_NM
      ,definition             AS  FUNC_SORCE
      ,*
FROM sys.sql_modules  
WHERE object_id = (OBJECT_ID(N'dbo.fn_AurumGuide_TableFuncCall'));

 

반응형