SQL自定義函式

2021-04-24 02:18:41 字數 3606 閱讀 3743

//建立使用者自定義函式------標量函式

create function dbo.bmrs(@bmh as int)

returns int

asbegin

declare @bmrs int

select @bmrs=count(工號)

from

銷售人員where 部門號=@bmh

return @bmrs

endgo

exec sp_help

銷售人員

go//標量函式的呼叫

declare @bmrs int

select @bmrs=dbo.bmrs(2)

select '2

號部門人數'=@bmrs

goselect '2

號部門人數'+convert(varchar(4),dbo.bmrs(3))

select

部門經理,部門名稱,實際人數=

dbo.bmrs(

部門號)

from

部門資訊

goselect

部門經理,部門名稱,實際人數=

dbo.bmrs(

部門號)

from

部門資訊

where

部門號=2

//建立內嵌錶值函式

----------a.

訂單號,銷售人員=b.姓名,客戶=c.姓名,**商=d.名稱,a.數量,a.總金額

------------以部門名稱作為輸入引數,建立部門訂單內嵌錶值函式

select * from

部門資訊

select * from

訂單資訊

select * from

客戶資訊

select * from

**商資訊

select * from

銷售人員

go----------

建立內嵌錶值函式

create function dbo.bmdd(@bmmc as varchar(10))

returns

table

asreturn( select a.

訂單號,銷售人員=b.姓名,客戶=c.姓名,**商=d.名稱,a.總金額,a.數量

from

訂單資訊as a inner join 銷售人員as b on a.銷售工號=b.工號inner join 客戶資訊 as c

on a.

客戶編號=c.員工編號inner join **商資訊as d on a.貨品編碼=d.編碼inner join 部門資訊as e

on b.

部門號=e.部門號where 部門名稱=e.部門名稱)

go----------內嵌錶值函式的呼叫

select * from dbo.bmdd('

銷售部')

--------------建立內嵌錶值函式的語法格式

create function

函式所有者.函式名稱(標量引數as 標量引數資料型別)

returns table

asreturn (select

語句)-----------建立檢視的語法格式

create view

檢視名

asselect

語句----------------用create function語句建立函式。

函式名在資料庫彙總必須唯一

,使用者定義函式可以有

輸入引數

並返回值,但是沒有輸出引數

。create function

所有者.函式名(標量引數as 標量資料型別)

returns

標量引數資料型別

asbegin

函式體return

變數//標量表示式

end----------

多語句錶值函式的返回值是表,有函式體,在函式體中可以使用表變數。

建立多語句錶值函式語法格式:

create function [

所有者名稱.]函式名稱(@引數名稱as 標量資料型別)

returns @

表變數table 表的定義

asbegin

函式體return

end

go說明:表(table)變數是一種特殊的資料型別,可用於函式、儲存過程和批處理中,用於儲存結果集以供以後處理。該資料型別主要用於臨時儲存一組行,這些行將作為

錶值函式的結果集

返回。 table

變數的行為類似於

區域性變數

,其作用域為宣告該變數的函式、儲存過程或批處理,其生命週期在定義

table

變數的 函式、儲存過程呢過和批處理結束時將自動清楚table變數。

表(table)變數的宣告語法:declare @local_variable table(表的定義)

/*根據訂單資訊表查詢得出每個銷售人員所開的訂單數。查詢的結果包括銷售人

員工號和訂單數。下面,我們採用表變數的方式將查詢的結果集儲存下來,以便程式使用。*/

declare @ordernum

table(

銷售工號int,

訂單數int)

---使用insert....select語句向表變數中插入記錄

insert @ordernum

select

銷售工號,訂單數=count(銷售工號) from 訂單資訊group by 銷售工號

select * from @ordernum

go /*

在market資料庫中,建立乙個多語句錶值函式,它可以查詢指

定部門每個銷售人員的訂單數,該函式接收輸入的部門號,通過查詢「訂單資訊」表返回銷售人員的工號、姓名和訂單數。*/

---建立多語句錶值函式

create function dbo.info(@bmh as int)

returns

@xsry table(

工號int primary key,

姓名varchar(10),

訂單數int)

asbegin

declare @ordernum

table(

銷售工號int,訂單數int)

insert @ordernum select

銷售工號,訂單數=count(銷售工號) from 訂單資訊group by 銷售工號

insert @xsry select a.

工號,a.姓名,b.訂單數from 銷售人員as a

left join

@ordernum as b on a.

工號=b.銷售工號

where a.

部門號=@bmh

return

end

go

sql 自定義函式

delimiter create definer function woshow try aid bigint returns bigint 20 language sql not deterministic sql security comment string begin if aid 0 th...

SQL自定義函式

自定義函式與儲存過程的區別 存在的意義 1.能夠在select等sql語句中直接使用自定義函式,儲存過程不行。2.自定義函式可以呼叫其他函式,也可以呼叫自己 遞迴 3.可以在表列和check 約束中使用自定義函式來實現特殊列或約束 4.自定義函式不能有任何 函式 是指對具有函式外作用域 例如資料庫表...

SQL 自定義函式

函式型別有 標量型函式 返回乙個確定型別的值 內聯錶值型函式 以表的形式返回值,相當於引數化的檢視 多宣告錶值函式 標量函式和內聯錶值函式結合體,返回值是乙個表,和標量型函式一樣可以用begin.end 建立自定義函式 標量型函式 use database gocreate function fun...