반응형
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) 내용검색 방법
내용 검색 흐름도.
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'));
반응형