sqlserver中的自定義函數(shù)的方法小結(jié)
更新時(shí)間:2010年06月11日 01:22:18 作者:
“自定義函數(shù)”是我們平常的說法,而“用戶定義的函數(shù)”是 SQL Server 中書面的說法。
“自定義函數(shù)”是我們平常的說法,而“用戶定義的函數(shù)”是 SQL Server 中書面的說法。
SQL Server 2000 允許用戶創(chuàng)建自定義函數(shù),自定義函數(shù)可以有返回值。
自定義函數(shù)分為:標(biāo)量值函數(shù)或表值函數(shù)
如果 RETURNS 子句指定一種標(biāo)量數(shù)據(jù)類型,則函數(shù)為標(biāo)量值函數(shù)??梢允褂枚鄺l Transact-SQL 語句定義標(biāo)量值函數(shù)。
如果 RETURNS 子句指定 TABLE,則函數(shù)為表值函數(shù)。
表值函數(shù)又可分為:內(nèi)嵌表值函數(shù)(行內(nèi)函數(shù))或多語句函數(shù)
如果 RETURNS 子句指定的 TABLE 不附帶列的列表,則該函數(shù)為內(nèi)嵌表值函數(shù)。
如果 RETURNS 子句指定的 TABLE 類型帶有列及其數(shù)據(jù)類型,則該函數(shù)是多語句表值函數(shù)。
標(biāo)量值函數(shù)示例
CREATE FUNCTION dbo.Foo()
RETURNS int
AS
BEGIN
declare @n int
select @n=3
return @n
END
內(nèi)嵌表值函數(shù)示例
CREATE FUNCTION dbo.Foo()
RETURNS TABLE
AS
return select id, title from msgs
內(nèi)嵌表值函數(shù)只有一個(gè) select 語句。
多語句表值函數(shù)示例(部分)
CREATE FUNCTION fn_FindReports (@InEmpId nchar(5))
RETURNS @retFindReports TABLE (empid nchar(5) primary key,
empname nvarchar(50) NOT NULL,
mgrid nchar(5),
title nvarchar(30))
...
注意其 RETURNS 部分。
多語句函數(shù)的主體中允許使用以下語句。未在下面的列表中列出的語句不能用在函數(shù)主體中。
賦值語句。
控制流語句。
DECLARE 語句,該語句定義函數(shù)局部的數(shù)據(jù)變量和游標(biāo)。
SELECT 語句,該語句包含帶有表達(dá)式的選擇列表,其中的表達(dá)式將值賦予函數(shù)的局部變量。
游標(biāo)操作,該操作引用在函數(shù)中聲明、打開、關(guān)閉和釋放的局部游標(biāo)。只允許使用以 INTO 子句向局部變量賦值的 FETCH 語句;不允許使用將數(shù)據(jù)返回到客戶端的 FETCH 語句。
INSERT、UPDATE 和 DELETE 語句,這些語句修改函數(shù)的局部 table 變量。
EXECUTE 語句調(diào)用擴(kuò)展存儲過程。
SQL Server 2000 允許用戶創(chuàng)建自定義函數(shù),自定義函數(shù)可以有返回值。
自定義函數(shù)分為:標(biāo)量值函數(shù)或表值函數(shù)
如果 RETURNS 子句指定一種標(biāo)量數(shù)據(jù)類型,則函數(shù)為標(biāo)量值函數(shù)??梢允褂枚鄺l Transact-SQL 語句定義標(biāo)量值函數(shù)。
如果 RETURNS 子句指定 TABLE,則函數(shù)為表值函數(shù)。
表值函數(shù)又可分為:內(nèi)嵌表值函數(shù)(行內(nèi)函數(shù))或多語句函數(shù)
如果 RETURNS 子句指定的 TABLE 不附帶列的列表,則該函數(shù)為內(nèi)嵌表值函數(shù)。
如果 RETURNS 子句指定的 TABLE 類型帶有列及其數(shù)據(jù)類型,則該函數(shù)是多語句表值函數(shù)。
標(biāo)量值函數(shù)示例
復(fù)制代碼 代碼如下:
CREATE FUNCTION dbo.Foo()
RETURNS int
AS
BEGIN
declare @n int
select @n=3
return @n
END
內(nèi)嵌表值函數(shù)示例
復(fù)制代碼 代碼如下:
CREATE FUNCTION dbo.Foo()
RETURNS TABLE
AS
return select id, title from msgs
內(nèi)嵌表值函數(shù)只有一個(gè) select 語句。
多語句表值函數(shù)示例(部分)
復(fù)制代碼 代碼如下:
CREATE FUNCTION fn_FindReports (@InEmpId nchar(5))
RETURNS @retFindReports TABLE (empid nchar(5) primary key,
empname nvarchar(50) NOT NULL,
mgrid nchar(5),
title nvarchar(30))
...
注意其 RETURNS 部分。
多語句函數(shù)的主體中允許使用以下語句。未在下面的列表中列出的語句不能用在函數(shù)主體中。
賦值語句。
控制流語句。
DECLARE 語句,該語句定義函數(shù)局部的數(shù)據(jù)變量和游標(biāo)。
SELECT 語句,該語句包含帶有表達(dá)式的選擇列表,其中的表達(dá)式將值賦予函數(shù)的局部變量。
游標(biāo)操作,該操作引用在函數(shù)中聲明、打開、關(guān)閉和釋放的局部游標(biāo)。只允許使用以 INTO 子句向局部變量賦值的 FETCH 語句;不允許使用將數(shù)據(jù)返回到客戶端的 FETCH 語句。
INSERT、UPDATE 和 DELETE 語句,這些語句修改函數(shù)的局部 table 變量。
EXECUTE 語句調(diào)用擴(kuò)展存儲過程。
相關(guān)文章
在SQLserver數(shù)據(jù)庫之間進(jìn)行傳表和傳數(shù)據(jù)的圖文教程
這篇文章主要介紹了在SQLserver數(shù)據(jù)庫之間進(jìn)行傳表和傳數(shù)據(jù)的圖文教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
SQL?Server導(dǎo)入.mdf方法的錯(cuò)誤處理方法
導(dǎo)入mdf文件和ldf文件到數(shù)據(jù)庫是網(wǎng)站搬家或者是初學(xué)者學(xué)習(xí)源碼是必要的一步,下面這篇文章主要給大家介紹了關(guān)于SQL?Server導(dǎo)入.mdf方法的錯(cuò)誤處理方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
Spark臨時(shí)表tempView的注冊/使用/注銷/注意事項(xiàng)(推薦)
transformation是根據(jù)原有RDD創(chuàng)建一個(gè)新的RDD,而action則把RDD操作后的結(jié)果返回給driver,這篇文章主要介紹了Spark臨時(shí)表tempView的注冊/使用/注銷/注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下2022-10-10
sql 語句 取數(shù)據(jù)庫服務(wù)器上所有數(shù)據(jù)庫的名字
sql 語句 取數(shù)據(jù)庫服務(wù)器上所有數(shù)據(jù)庫的名字,一般作者自己是沒問題了。2009-02-02
Sql學(xué)習(xí)第二天——SQL DML與CTE概述
關(guān)于DML即數(shù)據(jù)操縱語言;關(guān)于CTE即公用表表達(dá)式,接下來為大家介紹下CTE使用的地方以及優(yōu)點(diǎn)同時(shí)提供一個(gè)簡單的CTE例題,感興趣的各位可以參考下哈2013-03-03
SQL?Server?查詢死鎖及解決死鎖的基本知識(最新整理)
在 SQL Server 中,死鎖是指兩個(gè)或多個(gè)進(jìn)程互相等待對方持有的資源,從而無法繼續(xù)執(zhí)行的現(xiàn)象,這篇文章主要介紹了SQL?Server?查詢死鎖以及解決死鎖的基本知識,需要的朋友可以參考下2024-07-07

