//建立使用者自定義函式------標量函式
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...