目錄
接受引數、執行操作並將操作結果以值的形式返回(單個標量值/結果集)。
不能在函式中執行:修改資料庫表,操作不在函式上的區域性游標,傳送電子郵件,修改目錄等。
use tt
goselect
*from dbo.voc
go
item
color
quantity
chair
red1
chair
blue
2chair
red3
yizi
red175
yizi
blue
6yizi
yellow
240yizi
red5
yizi
yellow
120yizi
yellow
120yizi
red5
yizi
yellow
120yizi
yellow
120
-- 標量udf
create
function dbo.gettotalqt(
@item
varchar(10
))returns
intas
begin
declare
@totalqt
intset
@totalqt=(
select
sum(quantity)
from dbo.voc
where item =
@item
group
by item)
if@totalqt
isnull
set@totalqt=0
return
@totalqt
endgo
select dbo.gettotalqt(
'yizi'
)go
use tt
goselect
*from dbo.voc
goif object_id(
'v_getqt'
,'v')is
notnull
drop
view v_getqt
gocreate
view dbo.v_getqt
asselect
*from dbo.voc
where item =
'yizi'
goselect
*from dbo.v_getqt
-- 不能在檢視中使用引數,限制了檢視的靈活性
-- 內聯式錶值udf實現: >>引數化檢視<< 功能
if object_id(
'dbo.gettotalqt2'
,'if')is
notnull
drop
function dbo.gettotalqt2
gocreate
function dbo.gettotalqt2(
@item
varchar(10
))returns
table
asreturn
(select item, color, quantity
from dbo.voc
where item =
@item)go
select
*from dbo.gettotalqt2(
'yizi')go
select
*from dbo.gettotalqt2(
'chair'
)go
use tt
go-- eg.1
if object_id(
'dbo.getqt'
,'tf')is
notnull
drop
function dbo.getqt
gocreate
function dbo.getqt(
@qtint
)returns
@getcolor
table
( color varchar(10
)not
null
, qt int
notnull)as
begin
declare
@color
varchar(10
),@qt_
intselect
-- select 僅賦值最後乙個查詢
@color
= color,
@qt_
= quantity
from dbo.voc
where quantity >
@qtif
@color
isnot
null
and@qt
isnot
null
begin
insert
@getcolor
-- into可省略
select
@color
,@qt
endreturn
-- 返回
endgo
select
*from dbo.getqt(
100)
-- 只能查詢到最後乙個
-- eg.2
if object_id(
'dbo.getitemcolor'
,'tf')is
notnull
drop
function dbo.getitemcolor
gocreate
function dbo.getitemcolor(
@qtint
,@color
varchar(10
))returns
@get_item_color
table
( item varchar(20
)null
, color varchar(20
)null)as
begin
insert
@get_item_color
select item, color
from dbo.voc
where quantity >
@qtand color =
@color
return
endgo
select
*from dbo.getitemcolor(3,
'red'
)-- 修改
alter
function
schema
.func_name
...
MSSQL 自定義分割函式
由於要寫乙個加班程式 需要處理到的乙個問題就是批量插入 listbox的專案插入到資料庫 方法一 迴圈呼叫儲存過程 方法二 一次性傳入引數到儲存過程,儲存過程中游標處理 方法二的方案效率比較高 但需要解決的乙個問題是 如何分割函式 多層分隔函式 工號1 名字1,工號2 名字2,實現迴圈插入資料庫 分...
MS SQL自定義函式IsNumeric
判斷字串是否為純數字,負數不算。如 00012 54585 1000 函式返bit資料型別,是數字返回1,非數字返回0。asbegin declare rtv bit 1declare str nvarchar max ltrim rtrim isnull string,去除前後空格,如果為null...
MS SQL入門基礎 使用者自定義函式
除了使用系統提供的函式外,使用者還可以根據需要自定義函式。使用者自定義函式 user defined functions 是sql server 2000 新增的資料庫物件,是sql server 的一大改進。使用者自定義函式不能用於執行一系列改變資料庫狀態的操作,但它可以像系統函式一樣在查詢或儲存...