SQL Server 函数用法
SQL Server自定義函數分為三種類型: 標量函數(Scalar Function)、內嵌表值函數(Inline Function)、多語句表值函數(Multi-Statement Function)
1. 標量函數:
標量函數是對單一值操作,返回單一值。能夠使用表達式的地方,就可以使用標量函數。像我們經常使用的left、getdate等,都屬于標量函數。系統函數中的標量函數包括:數學函數、日期和時間函數、字符串函數、數據類型轉換函數等。
2. 內嵌表值函數:
內嵌表值函數的功能相當于一個參數化的視圖。它返回的是一個表,內聯表值型函數沒有由BEGIN-END 語句括起來的函數體。其返回的表由一個位于RETURN 子句中的SELECT 命令段從數據庫中篩選出來。
3. 多語句表值函數:
多語句表值函數可以看作標量型和內嵌表值型函數的結合體。它的返回值是一個表,但它和標量型函數一樣有一個用BEGIN-END 語句括起來的函數體,返回值的表中的數據是由函數體中的語句插入的。由此可見,它可以進行多次查詢,對數據進行多次篩選與合并,彌補了內聯表值型函數的不足。
標量函數Demo
1.創建模版
CREATE FUNCTION 函數名(參數 類型,參數 類型...)
RETURNS 返回類型
AS
BEGIN
DECLARE 申明變量名稱 類型;
SELECT <@ResultVar, sysname, @Result> = <@Param1, sysname, @p1> --SQL語句
RETURN <@ResultVar, sysname, @Result> --函數返回內容
END
2.示例
2.1 創建函數
CREATE FUNCTION [dbo].[ScalarFun](@ID int) --設置一個int類型參數
RETURNS varchar(100) --返回string類型
AS
BEGIN
DECLARE @name varchar(100); --申明變量
IF(@ID=5)
begin
SELECT @name='5歲的小明'
end
ELSE
begin
SELECT @name='who?'
end
RETURN @name --返回值
END
2.2 測試
內嵌表值函數Demo
1.創建模版
CREATE FUNCTION 函數名(參數 類型,參數 類型...)
RETURNS TABLE --返回表,固定值table
AS
RETURN --這里直接返回
(
SELECT 0 --SQL語句
)
GO
2.示例
2.1 創建函數
CREATE FUNCTION [dbo].[InlineFun](@TopID int)
RETURNS TABLE
AS
RETURN
(
--根據傳入參數,按照score從大到小排序查scores表前多少個數據
SELECT Top(@TopID) * FROM [dbo].[scores] ORDER BY score desc
)
2.2 測試
多語句表值函數Demo
1.創建模版
CREATE FUNCTION 函數名(參數 類型,參數 類型...)
RETURNS 表名 TABLE
(
參數 類型,
參數 類型...
)
AS
BEGIN
--SQL 語句
RETURN
END
GO
2.示例
2.1 創建函數
CREATE FUNCTION MultiStatementFun(@TopID int)
RETURNS @TempTable TABLE
(
id int not null,
score int not null
)
AS
BEGIN
--根據傳入參數,按照score從大到小排序查scores表前多少條數據,將這些數據插入到表@TempTable中
INSERT INTO @TempTable SELECT Top(@TopID) id,score FROM [dbo].[scores] ORDER BY score desc
RETURN
END
GO
2.2 測試
總結
以上是生活随笔為你收集整理的SQL Server 函数用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 明天来公司报道!饭制《只狼2》虚幻5概念
- 下一篇: .NET5开发的使用电脑识别二维码与摄像