91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL自定義函數function

發布時間:2020-08-11 19:01:16 來源:網絡 閱讀:5280 作者:chenhao_asd 欄目:關系型數據庫

https://blog.csdn.net/qq_23833037/article/details/53170789


https://www.cnblogs.com/youring2/p/4916400.html


用戶定義自定義函數像內置函數一樣返回標量值,也可以將結果集用表格變量返回
sql函數必須有返回值。

ps: 函數看成一個處理某些數據的功能,因有返回值,則在代碼使用中,需要一個處理過的數據。
可直接調用函數處理數據,返回數據給代碼使用。

標量函數:返回一個標量值。
表格值函數{內聯表格值函數、多表格值函數}:返回行集(即返回多個值)

標量函數和表格值函數的區別在于 返回是標量值(單個數字或者單個數據),還是表格值(多個數據)

1、標量函數

create funetion 函數名(參數) 
return 返回值數據類型 
[with {Encryption | Schemabinding }] 
[as] 
begin 
SQL語句(必須有return 變量或值) 
End

--Schemabinding :將函數綁定到它引用的對象上(注:函數一旦綁定,則不能刪除、修改,除非刪除綁定)

測試數據:


USE [Scratch]
GO
/****** Object:  Table [dbo].[number]    Script Date: 04/19/2018 17:01:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[number](
 [number] [int] NULL,
 [name] [nchar](10) NULL
) ON [PRIMARY]
GO

插入數據:

  INSERT INTO number(number,name)
  VALUES(123,'a'),
  (222,'b'),
  (333,'c'),
  (323,'d')

例子:

alter function SumRes(@sco nvarchar(20)) --函數名和參數
returns real --返回real 值類型
-- real=float(24)   
as
begin
declare @sum real 
declare @code varchar(11)
set @code = @sco + '%'
select @sum = sum(number) from number where name like @code
return @sum --返回值
end

引用自定義函數: 

用戶自定義函數返回值可放在局部變量中,用set select exec 賦值)

declare @sum1 real,@sum2 real,@sum3 real
set @sum1 = dbo.SumRes('b')
select @sum2 = dbo.SumRes('b')
exec @sum3 = dbo.sumRes'b'
select @sum1 ,@sum2 ,@sum3

SQL自定義函數function


實例2:

下面的這個函數根據生日返回年齡:

create function dbo.calcAge(@birthday datetime)    --函數名和參數
returns int    --返回值類型
as
begin
    declare @now datetime
    declare @age int
    set @now=getdate()

    set @age=YEAR(@now)-YEAR(@birthday)

    return @age    --返回值
end
print dbo.calcAge('2000-1-1')

執行這段腳本創建函數,創建成功之后,我們調用一下看看效果: 輸出:15


2、表格值函數

a、內聯表格值函數
格式:
create function 函數名(參數)
returns table
[with{ Encryption | Schemabinding }]
as
return(一條SQL語句)

例子:

create function tabcmess(@code nvarchar(50))
returns table
as
return(select * from number where name = @code)

調用和結果:

SQL自定義函數function

b、多句表格值函數

多表格值函數的定義:包含多條SQL語句,必須或者至少有一條給表格變量賦值!!!

表格變量格式:
returns @變量名(dt) table( 列定義 | 約束定義 )

對表格變量中可以執行 select, insert, update, delete,
但select into 和 insert 語句的結果集是從存儲過程插入。

格式:
create function 函數名(參數)
return  @dt  table(列的定義)
[with{Encryption | Schemabinding}]
as
begin
SQL語句
end

例子:

create function tabcmess_mul(@code nvarchar(50))
returns @dt table(number int,name nchar(10))
as
begin
insert into @dt select number,name from number where name = @code
return
end

調用和結果:

SQL自定義函數function


3. 修改自定義函數

alter function tabcmess_mul(@code nvarchar(50))
returns @dt table(number int,name nchar(10))
as
begin
insert into @dt select number,name from number where name = @code
return
end

4. 刪除自定義函數

drop function tabcmess_mul


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴义市| 浏阳市| 广河县| 丰台区| 莱西市| 比如县| 远安县| 二手房| 揭西县| 武强县| 竹溪县| 宕昌县| 文安县| 瑞金市| 巫山县| 金川县| 高密市| 湟源县| 西城区| 洛浦县| 西乌| 深水埗区| 澎湖县| 固阳县| 宜良县| 丰顺县| 安远县| 克拉玛依市| 洛南县| 赤壁市| 法库县| 收藏| 瑞昌市| 明溪县| 商南县| 遂平县| 普宁市| 漯河市| 顺平县| 灵台县| 昌图县|