MSSQL 14 開發篇 自定義函式

2021-09-29 06:47:48 字數 3464 閱讀 5565

目錄

接受引數、執行操作並將操作結果以值的形式返回(單個標量值/結果集)。

不能在函式中執行:修改資料庫表,操作不在函式上的區域性游標,傳送電子郵件,修改目錄等。

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 的一大改進。使用者自定義函式不能用於執行一系列改變資料庫狀態的操作,但它可以像系統函式一樣在查詢或儲存...