建立使用者自定義函式 SQL

2022-04-12 07:02:21 字數 3143 閱讀 7892

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

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

endgo

說明:表(

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

endgo

建立使用者自定義函式 SQL

建立使用者自定義函式 標量函式 create function dbo.bmrs bmh as int returns int asbegin declare bmrs int select bmrs count 工號 from 銷售人員 where 部門號 bmh return bmrs endg...

SQL 使用者自定義函式

使用者自定義函式是 sql server 的資料庫物件,它不能用於執行一系列改變資料庫狀態的操作,但它可以像系統函式一樣在查詢或儲存過程等的程式段中使用,也可以像儲存過程一樣通過 execute 命令來執行。使用者自定義函式中儲存了乙個 transact sql 例程,可以返回一定的值。在sql s...

SQL 使用者自定義函式

使用者自定義函式是 sqlserver 的資料庫物件,它不能用於執行一系列改變資料庫狀態的操作,但它可以像系統函式一樣在查詢或儲存過程等的程式段中使用,也可以像儲存過程一樣通過 execute 命令來執行。使用者自定義函式中儲存了乙個 transact sql 例程,可以返回一定的值。在sqlser...