日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库原理与应用(SQL Server)笔记 第十章 用户定义函数

發(fā)布時間:2024/2/28 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库原理与应用(SQL Server)笔记 第十章 用户定义函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • 前言
  • 一、用戶定義函數(shù)的定義
  • 二、用戶定義函數(shù)的分類
  • 三、標(biāo)量函數(shù)和內(nèi)聯(lián)表值函數(shù)
    • (一)標(biāo)量函數(shù)的定義
    • (二)標(biāo)量函數(shù)的調(diào)用
      • 1、SELECT語句調(diào)用
      • 2、EXEC語句調(diào)用
    • (三)內(nèi)聯(lián)表值函數(shù)的定義
    • (四)內(nèi)聯(lián)表值函數(shù)的調(diào)用
  • 四、多語句表值函數(shù)
    • (一)多語句表值函數(shù)的定義
    • (二)多語句表值函數(shù)的調(diào)用
  • 五、用戶定義函數(shù)的刪除
  • 結(jié)語


前言

本章內(nèi)容將介紹數(shù)據(jù)庫用戶自定義T-SQL函數(shù),以及其定義和調(diào)用。

一、用戶定義函數(shù)的定義

用戶定義函數(shù),即是用戶根據(jù)自己需要所定義的函數(shù),它有允許模塊化程序設(shè)計、執(zhí)行速度快、減少網(wǎng)絡(luò)流量等特點。創(chuàng)建好的用戶定義函數(shù)可在當(dāng)前數(shù)據(jù)庫——可編程性——函數(shù)中找到,如下圖:

二、用戶定義函數(shù)的分類

用戶定義函數(shù)分為兩類,為內(nèi)聯(lián)表值函數(shù)和多語句表值函數(shù)。

三、標(biāo)量函數(shù)和內(nèi)聯(lián)表值函數(shù)

內(nèi)聯(lián)表值函數(shù)是在RETURN 子句中包含單個SELECT語句。

(一)標(biāo)量函數(shù)的定義

標(biāo)量函數(shù)返回在RETURNS 子句中定義的類型的單個數(shù)據(jù)值,即返回單個數(shù)據(jù)值。
格式如下:

CREATE FUNCTION <函數(shù)名>(@參數(shù)的名稱 類型) RETURNS <返回參數(shù)的類型> ASBEGIN<函數(shù)體(SQL語句)>RETURN <返回值>END ; ...

(二)標(biāo)量函數(shù)的調(diào)用

1、SELECT語句調(diào)用

格式如下:
架構(gòu)名.函數(shù)名(實參1,實參2,...,實參n)

2、EXEC語句調(diào)用

格式如下:
EXEC變量名=架構(gòu)名.函數(shù)名 實參1,實參2,...,實參n或
EXEC變量名=架構(gòu)名.函數(shù)名 形參名1=實參1,...,形參名2=實參2,...,形參名n=實參n

例1、根據(jù)商品信息表,定義一個標(biāo)量函數(shù)F_Sales,其功能是:輸入商品的ID號,根據(jù)ID號返回該商品的價格。
sql語句
創(chuàng)建函數(shù):
CREATE FUNCTION F_Sales(@ProductID char(6)) RETURNS int AS BEGIN DECLARE @Price int SELECT @Price=Price FROM Product WHERE ProductID=@ProductID RETURN @Price END
用SELECT語句調(diào)用函數(shù)(查詢ID為P01001的商品價格):
USE Sales DECLARE @ProductID char(6) DECLARE @Price int SELECT @ProductID='P01001' SELECT @Price=dbo.F_Sales(@ProductID) SELECT @Price AS '商品價格'


這里當(dāng)然也可以使用EXEC語句來調(diào)用函數(shù)即改為,結(jié)果也是一樣的(查詢ID為P01001的商品價格):
USE Sales DECLARE @ProductID char(6) DECLARE @Price int EXEC @Price=dbo.F_Sales @ProductID='P01001' SELECT @Price AS '商品價格'

(三)內(nèi)聯(lián)表值函數(shù)的定義

標(biāo)量函數(shù)只返回單個標(biāo)量值,而對于內(nèi)聯(lián)表值函數(shù)返回表值(結(jié)果集)。
格式如下:

CREATE FUNCTION <函數(shù)名>(@參數(shù)的名稱 類型) RETURNS TABLE AS RETURN (<SQL語句> ) ; ...

(四)內(nèi)聯(lián)表值函數(shù)的調(diào)用

這里要注意,內(nèi)聯(lián)表值函數(shù)的調(diào)用與標(biāo)量函數(shù)的調(diào)用不一樣,它只能通過SELECT語句來調(diào)用,而且在調(diào)用時可以只使用函數(shù)的名稱。

例2、根據(jù)商品信息表,定義一個內(nèi)聯(lián)表值函數(shù)F_Sales1,其功能是:輸入商品的ID號,根據(jù)ID號查詢該商品的商品名稱、商品價格和商品的庫存量。

sql語句
創(chuàng)建函數(shù):
CREATE FUNCTION F_Sales1(@ProductID char(6)) RETURNS TABLE AS RETURN ( SELECT ProductName,Price,Stocks FROM Product WHERE @ProductID=ProductID
用SELECT語句調(diào)用函數(shù)(查詢ID為P01001的商品名稱、商品價格和商品的庫存量):
USE Sales SELECT *FROM F_Sales1('P01001')

四、多語句表值函數(shù)

(一)多語句表值函數(shù)的定義

多語句表值函數(shù)和內(nèi)聯(lián)表值函數(shù)都返回表值。這里要說明一下它們的區(qū)別:
對于內(nèi)聯(lián)表值函數(shù),它不需要定義返回表的類型,其返回表是由單個T-SQL語句的結(jié)果集,不需要用BEGIN...END語句分隔。
對于多語句標(biāo)量函數(shù),它需要定義返回表的類型,其返回表是由多個T-SQL語句的結(jié)果集,其BEGIN...END語句中包含多個T-SQL語句。
格式如下:

CREATE FUNCTION <函數(shù)名>(@參數(shù)的名稱 類型) RETURNS <@返回表的名稱> TABLE<列屬性>AS BEGIN<函數(shù)體(SQL語句)>RETURN END ; ...

(二)多語句表值函數(shù)的調(diào)用

多語句表值函數(shù)的調(diào)用與內(nèi)聯(lián)表值函數(shù)的調(diào)用一樣,它也是只能通過SELECT語句來調(diào)用,而且在調(diào)用時可以只使用函數(shù)的名稱。

例3、根據(jù)商品信息表,定義一個多語句表值函數(shù)F_Sales2,其功能是:輸入商品的ID號,根據(jù)ID號查詢該商品的商品名稱、商品分類、商品價格和商品的庫存量。

sql語句

創(chuàng)建函數(shù):
CREATE FUNCTION F_Sales2(@ProductID char(6)) RETURNS @ProductInfo TABLE ( PName varchar(30), CID int, Pr money, St smallint ) AS BEGIN INSERT @ProductInfo SELECT ProductName,CategoryID,Price,Stocks FROM Product WHERE @ProductID=ProductID RETURN END
用SELECT語句調(diào)用函數(shù)(查詢ID為P03001的商品名稱、商品分類、商品價格和商品的庫存量):
USE Sales SELECT * FROM F_Sales2('P03001')

五、用戶定義函數(shù)的刪除

我們可以通過對象資源管理器刪除所定義的函數(shù),如下圖:

也可以通過T-SQL語句進(jìn)行刪除,可一次刪除一個或者多個函數(shù),格式如下:

DROP FUNCTION <函數(shù)的名稱>...

結(jié)語

以上就是本次數(shù)據(jù)庫原理與應(yīng)用的全部內(nèi)容,篇幅較長,感謝您的閱讀和支持,若有表述或代碼中有不當(dāng)之處,望指出!您的指出和建議能給作者帶來很大的動力!!!

總結(jié)

以上是生活随笔為你收集整理的数据库原理与应用(SQL Server)笔记 第十章 用户定义函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。