亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

Sqlserver 自定義函數(shù) Function使用介紹

2024-08-31 01:04:16
字體:
來源:轉載
供稿:網(wǎng)友

一.FUNCTION:
在sqlserver2008中有3中自定義函數(shù):標量函數(shù)/內(nèi)聯(lián)表值函數(shù)/多語句表值函數(shù),首先總結下他們語法的異同點: 

同點:
1.創(chuàng)建定義是一樣的: a, CREATE FUNCTION F_NAME(傳入的參數(shù)名稱 傳入?yún)?shù)的類型) b,RETURNS 返回值類型 c,AS 異點:1.標量函數(shù)返回的是一個數(shù)據(jù)類型值,內(nèi)聯(lián)表值函數(shù)返回的是一個table,而多語句返回的是一個table的變量(類似前面兩個的結合);
2.語法的結構:標量函數(shù)和多語句函數(shù)都是要有begin,,,end,內(nèi)聯(lián)表值函數(shù)就沒有;
3.調(diào)用:標量函數(shù)要寫成在dbo,function_name;

標量函數(shù),利用上篇文章寫的數(shù)據(jù)表,在[T_員工信息]表中查姓名為李異峰員工的工號:

USE SQL_SYSTEM GOCREATE FUNCTION F_GONGHAO(@XINGMING NVARCHAR(5))RETURNS INT ASBEGINDECLARE @GONGHAO INTSET @GONGHAO =(SELECT Y.工號 FROM[T_員工信息] AS Y WHERE Y.姓名 =@XINGMING )RETURN @GONGHAOENDGO/*上面是標量函數(shù)的一個簡單的例舉,下面就開始調(diào)用,注意是在dbo.下*/SELECT [姓名] FROM[T_員工信息] WHERE [姓名]='李異峰' /**對比的查詢*//*請注意觀察,和對比*/SELECT [姓名],DBO.F_GONGHAO ('李異峰')AS 工號 FROM[T_員工信息] WHERE [姓名]='李異峰'GO

F5下:

Sqlserver,Function

內(nèi)聯(lián)表值函數(shù):他返回的可是一個table哦,比如:篩選出2014.2.28號所有員工的打卡記錄:

USE SQL_SYSTEM GOCREATE FUNCTION F_DAKAJILU(@RIQI DATE)RETURNS TABLEASRETURN(SELECT* FROM[T_考勤]AS K WHERE K.日期 =@RIQI )GO/*需要注意的就是他的寫法上沒有begin+end*//*下面就是將date帶入函數(shù)中*/SELECT*FROM [F_DAKAJILU]('2014/02/28')GO

F5:

Sqlserver,Function

多語句表值函數(shù)就是,表值函數(shù)+內(nèi)聯(lián)表值函數(shù)綜合版:就寫個返回當天打卡記錄和涉及員工的個人信息:

USE SQL_SYSTEM GOCREATE FUNCTION F_D_DAKAJILU(@RIQI DATE)RETURNS @TEMP_TABLE TABLE( /*這里要注意的就是既然是多語句的話,那你就要告訴計算機你要查詢的列是哪些*/[姓名]NVARCHAR(5) NOT NULL,[工號]INT NOT NULL,[職位]NVARCHAR(10) NOT NULL,[部門]NVARCHAR(5) NOT NULL,[是否夜班]NCHAR(1) NOT NULL,[日期]DATE NOT NULL,[當天上班時間]FLOAT(1)NOT NULL) /*以上就是要告訴計算機你要的一個基本信息列*/ASBEGININSERT INTO @TEMP_TABLE /*這句的意思是將下面的查詢結果插入到@TEMP_TABLE變量中去*/SELECT Y.姓名 ,Y.工號 ,Y.職位 ,Y.部門 ,K.夜班 ,K.日期 ,K.當天上班時間 FROM[T_員工信息] AS Y CROSS JOIN [T_考勤] AS K  /*這里我用的是交叉連接*/WHERE Y.工號 =K.工號 AND K.日期=@RIQI RETURN ENDGOSELECT*FROM[F_D_DAKAJILU]('2014/02/28')GO

F5:

Sqlserver,Function

二:CURSOR,當要檢索復雜的數(shù)據(jù)的每條數(shù)據(jù)的時候就可以用到它,類似于c語言的指針一樣,他可以在你的數(shù)據(jù)表中閱歷每條數(shù)據(jù)和更新。 1.新寫個cursor閱歷數(shù)據(jù)表(T_員工信息)的數(shù)據(jù)過程: 1.1.聲明一個只讀cursor:

USE SQL_SYSTEM SET TRANSACTION ISOLATION LEVEL REPEATABLE READBEGIN TRANSACTION CURSOR_READ_T_員工信息DECLARE CUR_T_員工信息 SCROLL CURSOR FORSELECT Y.姓名 ,Y.工號 ,Y.職位 ,Y.部門 FROM[T_員工信息]AS Y ORDER BY Y.工號 ASC COMMIT TRANSACTION CURSOR_READ_T_員工信息GO

1.2.打開:

OPEN GLOBAL CUR_T_員工信息GO

1.3.閱歷每條數(shù)據(jù):

/*聲明4個變量用來接收暫存游標中的數(shù)據(jù)*/DECLARE @XINGMING NVARCHAR(3),@GONGHAO INT,@ZHIWEI NVARCHAR(10),@BUMEN NVARCHAR(8)/*利用全局變量求取當前數(shù)據(jù)表中的數(shù)據(jù)行數(shù)和*/PRINT'當前數(shù)據(jù)表中有'+CAST(@@CURSOR_ROWS AS NVARCHAR(6))+'行數(shù)據(jù)。'/*讀取第一條數(shù)據(jù)并存入暫存變量中*/FETCH FIRST FROM[CUR_T_員工信息]INTO @XINGMING,@GONGHAO,@ZHIWEI,@BUMEN/*利用@@FETCH_STATUS返回的數(shù)值來確定cursor在數(shù)據(jù)表中讀取的情況=0為fetch執(zhí)行成功*/WHILE(@@FETCH_STATUS =0)BEGINPRINT'姓名:'+@XINGMING+' 工號:'+CONVERT(VARCHAR(3),@GONGHAO)+' 職位:'+@ZHIWEI+' 部門:'+@BUMENFETCH NEXT FROM[CUR_T_員工信息] INTO @XINGMING,@GONGHAO,@ZHIWEI,@BUMENENDGO

F5:

Sqlserver,Function

1.4.用完后就關閉和釋放:

/*關閉*/CLOSE GLOBAL CUR_T_員工信息/*釋放內(nèi)存*/DEALLOCATE GLOBAL CUR_T_員工信息GO

這樣的話就實現(xiàn)了讀取每條記錄的功能,然后就可以用它來更新相關的數(shù)據(jù)條(所有的工號值+100):

USE SQL_SYSTEM /*下面聲明和打開update——cursor*/SET TRANSACTION ISOLATION LEVEL REPEATABLE READBEGIN TRANSACTION TR_UPDATE_YG DECLARE CUR_T_YG CURSOR FORSELECT YG.姓名 ,YG.工號 ,YG.職位 ,YG.部門 FROM[T_yuangongxinxi]AS YG FOR UPDATE OPEN GLOBAL CUR_T_YGCOMMIT TRANSACTION TR_UPDATE_YG

UPDATE:

PRINT'當前有'+CONVERT(VARCHAR(3),@@CURSOR_ROWS)+'條數(shù)據(jù)行。'FETCH NEXT FROM[CUR_T_YG]WHILE(@@FETCH_STATUS=0)BEGINUPDATE[T_yuangongxinxi] SET[工號] =[工號]+100WHERE CURRENT OF CUR_T_YGFETCH NEXT FROM[CUR_T_YG] END

SELECT:

Sqlserver,Function

關閉釋放:

CLOSE GLOBAL CUR_T_YGDEALLOCATE GLOBAL CUR_T_YG

三:PROCEDURE,存儲過程是利用SQL Server所提供的Transact-SQL語言所編寫的程序,同時也能在高級語言上調(diào)用其存儲過程。 3.1.無參數(shù):說一個調(diào)用查詢數(shù)據(jù)表的pro:

USE SQL_SYSTEM GOCREATE PROCEDURE PRO_SELECT_TWITH RECOMPILE ASSELECT* FROM[T_yuangongxinxi] GOEXECUTE:EXECUTE PRO_SELECT_T

F5:

Sqlserver,Function

3.1.2.EXECUTE PRO_SELECT_T在這里其實就是一個view,還可以把execute調(diào)用結果插入到新表:

USE SQL_SYSTEM SELECT*INTO AA FROM[T_yuangongxinxi] GOTRUNCATE TABLE AA --TRUNCATE與DELETE的區(qū)別就是TR效率高于DE,而且DE清空時會在日志里面留下恢復記錄GOINSERT INTO AAEXECUTE PRO_SELECT_TGO

結果就不截圖了, 3.2.帶參pro,寫個修改后輸出修改的信息: 例如公司的員工經(jīng)常有職位變動的情況,就寫個這方面的,給出變動員工的工號就可以修改該員工的職位,然后將修改的操作反饋出來:

USE SQL_SYSTEM GOCREATE PROCEDURE PRO_DAUP_ZHIWEI@GONGHAO INT,@ZHIWEI NVARCHAR(10),@RETURNS NVARCHAR(50) OUTPUTASBEGIN/*獲取更新前的職位信息*/DECLARE @QIAN_RETURN_ZHIWEI NVARCHAR(10),@XINGMING NVARCHAR(3)SELECT @QIAN_RETURN_ZHIWEI =AA.職位 ,@XINGMING =AA.姓名 FROM[AA]WHERE AA.工號 =@GONGHAO /*更新*/UPDATE[AA] SET[職位] =@ZHIWEI WHERE AA.工號 =@GONGHAO SET @RETURNS = '已經(jīng)成功將工號為:【'+CONVERT(VARCHAR(3),@GONGHAO)+'】,姓名為:【'+@XINGMING+'】,職位【'+@QIAN_RETURN_ZHIWEI+'】更新為:【'+@ZHIWEIEND

EXECUTE:

DECLARE @PRINTF NVARCHAR(50);EXECUTE PRO_DAUP_ZHIWEI 101,'SQL工程師',@PRINTF OUTPUT SELECT @PRINTF AS '更新消息'GO

F5:

Sqlserver,Function

PRO就說到這里了;
四:TRIGGER,觸發(fā)器,類似于一個地雷一樣,只要你觸犯了他的要求的話,他就開始工作了,也可以利用這個功能去維持或阻擋某些不想發(fā)生的錯誤操作, DDL:如:不許刪除某個【AA】表:

USE SQL_SYSTEM GOCREATE TRIGGER DROP_TON DATABASE FOR DROP_TABLE ASBEGINROLLBACK TRANSACTION PRINT'不能刪除的,因為我已經(jīng)添加了觸發(fā)保護!'END

drop:

DROP TABLE AA 

F5:

Sqlserver,Function

DML,是解決對最低層數(shù)據(jù)的問題: 在這里就存在臨時的2個表:deleted 和 inserted 邏輯(概念)表,要搞明白就要知道trigger的工作原理: insert 操作時:

Sqlserver,Function

delete 操作時:

Sqlserver,Function

update 操作時:

Sqlserver,Function

簡單舉個例子來說下update的操作:也就是重點看inserted和deleted表上:

USE [SQL_SYSTEM]GO/****** Object: Trigger [dbo].[UPDATE_T] Script Date: 03/04/2014 16:04:21 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TRIGGER [dbo].[UPDATE_T]ON [dbo].[AA] INSTEAD OF UPDATEASBEGININSERT INTO T_UPDATE_HOUSELECT* FROM[inserted] /*將更新成的數(shù)據(jù)插入到【T_UPDATE_HOU】中*/INSERT INTO T_UPDATE_QIANSELECT*FROM[deleted] /*將更新前的數(shù)據(jù)插入到【T_UPDATE_QIAN】中*/PRINT'更新完畢,更新前的數(shù)據(jù)已經(jīng)寫入到【T_UPDATE_QIAN】,更新后的數(shù)據(jù)插入到【T_UPDATE_HOU】。'END

update:

USE SQL_SYSTEM GOUPDATE[AA] SET AA.職位 ='SQL高級工程師'WHERE AA.工號=101/*以上是個簡單的更新操作,用于update觸發(fā)*/SELECT* FROM[T_UPDATE_HOU] --修改成的數(shù)據(jù)SELECT* FROM[T_UPDATE_QIAN] --待修改的數(shù)據(jù)GO

F5:

Sqlserver,Function

Sqlserver,Function


注:相關教程知識閱讀請移步到MSSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
一本久道中文无码字幕av| 日韩电影免费观看高清完整版在线观看| 日韩网站免费观看高清| 国产精品igao视频| 久久精品国产久精国产爱| 成人免费高清视频在线观看| 欧美.www| 在线观看黄网址| 精品网站在线| 在线成人精品视频| 亚洲精品乱码久久久久久9色| 精品一区二区三区高清免费不卡| 国产乱码一区二区| 人妻巨大乳一二三区| 50度灰在线| proumb性欧美在线观看| 国内揄拍国内精品少妇国语| 日本在线播放一区| 精品人妻伦一二三区久久| 丝袜亚洲另类欧美重口| 国产成人免费视| 亚洲成熟少妇视频在线观看| 大香煮伊手机一区| 中文字幕日韩在线| 久久久国产精品x99av| 成人高潮a毛片免费观看网站| 日韩欧美精品一区二区综合视频| 久久精品国产99久久6| 亚洲日韩第九十九页| 精品一区二区免费| 一本色道综合亚洲| 日本高清视频在线观看| 日韩中文字幕在线观看视频| 成人久久网站| 国产精品视频一区二区久久| 一级片视频免费观看| 蜜桃免费一区二区三区| 国产欧美日韩亚洲一区二区三区| 日本久久亚洲电影| 99国内精品久久久久久久| 亚洲精品一二| 日韩精品中文字幕一区| 亚洲精品一区三区三区在线观看| 亚洲毛片亚洲毛片亚洲毛片| 国产一区二区三区四区二区| 亚洲s码欧洲m码国产av| 91精品国产自产在线丝袜啪| 国产成人精品三级高清久久91| 欧美黑人激情| 亚洲精品免费一区亚洲精品免费精品一区| 精品久久久久久久久久久久久久久久| 欧美大香线蕉线伊人久久国产精品| 婷婷在线精品视频| 亚洲激情视频在线观看| 超碰电影在线播放| 乐播av一区二区三区| 久久久人人爽| 国产美女av在线| 自拍视频亚洲| 亚洲精品18在线观看| 国产免费无遮挡吸奶头视频| 国产精品久久久久久av福利软件| 午夜视频在线观看韩国| 国内精品在线视频| 国产日产在线观看| 五月婷婷久久丁香| 亚洲欧美在线精品| 日韩一区日韩二区| 黄色小网站在线观看| 久久精品无码中文字幕| 亚洲啪av永久无码精品放毛片| 美女高潮网站| 成人免费观看www在线| 麻豆影视国产在线观看| 欧美日韩免费观看视频| 青春草免费视频| 久久久久久久极品内射| 粉嫩tv在线播放| 一区三区二区视频| 欧美黄色小视频| 农村黄色一级片| 久久久久久久久久综合| 5858p先锋影音资源网| 成人免费淫片95视频观看网站| 国产综合在线观看| 欧美1区2区| 日韩欧美一区中文| 日本在线免费播放| 91福利视频久久久久| 亚洲日本精品一区| 99久久99久久精品免费看小说.| 久久精品国产成人| 欧美人与z0zoxxxx特| 国产精品久久久久久久乖乖| www.视频在线.com| **欧美日韩vr在线| 少妇特黄一区二区三区| 欧美人与拘性视交免费看| 中文字幕一区二区三区乱码不卡| 精品国产乱码一区二区三区| 精品国产一区二区三区久久久| 手机看片1024国产| 免费观看又色又爽又黄的网站| 777片理伦片在线观看| 国产精品三级a三级三级午夜| 亚洲欧美日韩成人在线| 国产精品美女久久久久久| www.久久热.com| 欧美三级黄视频| 91久久国产综合久久91| 91网站免费看| 91丝袜高跟美女视频| 午夜av一区| 国产精品护士白丝一区av| 亚洲搞黄视频| 日日噜噜噜噜人人爽亚洲精品| 色网址在线观看| 亚洲色图欧美日韩| 99久久婷婷这里只有精品| av片在线免费观看| 国产成人精品一区二区三区网站观看| 国产精品久久国产精麻豆99网站| 欧美精品亚洲精品日韩精品| 日韩乱码人妻无码中文字幕| 濑亚美莉一二区在线视频| 国语产色综合| 中文字幕免费高清网站| 精品在线不卡| 国产精品视频一区二区三区四区五区| 91网站免费视频| 在线观看v片| 一级黄色a毛片| 天天色 色综合| 国产精品极品美女在线观看| 欧美在线va视频| 成人午夜av电影| 天天综合精品| 污污视频在线观看网站| 福利视频一区二区三区四区| 欧美在线观看18| 成人免费视频国产免费观看| 亚欧洲精品在线视频| 日本最新一区二区三区视频观看| 日本成人黄色网址| 操她视频在线观看| 精品在线视频一区二区| 日韩三级小视频| 精品毛片久久久久久| 国产麻豆一级片| 东热在线免费视频| 国产又粗又黄又猛| 久久91精品国产91久久小草| 懂色av一区二区三区在线播放| 久久91亚洲| 美女又爽又黄免费动漫| 日本一级理论片在线大全| 国产精品99久| 免费av毛片在线看| 91久久嫩草影院一区二区| 亚洲成人av免费看| 中文写幕一区二区三区免费观成熟| 自拍偷拍亚洲精品| 男女视频在线| 国产视频播放| 无人码人妻一区二区三区免费| 日本五十路女优| 亚洲无线码一区二区三区| 亚洲va欧美va人人爽成人影院| 欧美日韩三级一区二区| 中文字幕在线中文| 色婷婷久久久久swag精品| 亚洲字幕在线观看| 亚洲国产女人aaa毛片在线| 国产亚洲综合性久久久影院| 日本中文字幕网| 91麻豆精品国产自产在线| 正在播放国产一区| 在线观看免费黄色小视频| 日产福利视频在线观看| 亚洲一区二区综合| avtt天堂资源网站| 久操成人在线视频| 97免费在线观看视频| 欧美三级黄网| 国产青青在线视频| 国产成人精品免费视频大全软件| 精品久久久一区二区| 美女啪啪无遮挡免费久久网站| 日韩不卡av在线| 国产片在线观看| 日韩经典中文字幕在线观看| 青青青视频在线免费观看| 中文字幕av在线一区二区三区| 五月天久久久久久| 一区免费观看视频| 欧美日韩综合色| 欧美激情性xxxxx| 欧美国产欧美综合| 亚洲一二三区av| 怕怕欧美视频免费大全| 在线观看视频黄色| 非洲黑人最猛性xxxx交| 亚洲久久久久久久| 欧美美最猛性xxxxxx| 久久久久精彩视频| 日韩小视频在线观看专区| 国产夫绿帽单男3p精品视频| 日韩一区二区中文字幕| 亚洲电影一级黄| 被陌生人带去卫生间啪到腿软| 亚洲电影免费观看高清完整版在线| 欧美二区乱c少妇| 免费一看一级毛片| 天天爽夜夜爽视频| 天堂аⅴ在线最新版在线| 欧美做爰性欧美大fennong| caoporm超碰国产精品| 高清视频一区| 日韩一二三在线视频播| 国产精品福利小视频| 日本电影全部在线观看网站视频| 777欧美精品| 91av在线免费观看| aⅴ在线视频男人的天堂| 先锋影音资源综合在线播放av| 亚洲日本aⅴ片在线观看香蕉| 欧美涩涩网站| 亚洲伦伦在线| 色8久久影院午夜场| 国产一区二区无遮挡| 欧美精品日韩综合在线| 一级香蕉视频在线观看| 最新国产在线观看| 免费看91视频| 顶臀精品视频www| 日韩一区二区久久| 日韩黄色一级片| 成年免费在线观看| 日韩一级片免费| 久草在线新免费首页资源站| 国产特级嫩嫩嫩bbb| 精品久久久久中文慕人妻| 久草免费资源站| 一本加勒比波多野结衣| 全球成人中文在线| 成年人在线观看av| 日韩母乳在线| 福利网址在线| 日韩激情电影免费看| 久久婷婷国产麻豆91| 老司机精品视频网| 精品在线视频免费观看| 小日子的在线观看免费第8集| 7777精品视频| av亚洲精华国产精华精| 国产精品午夜福利| 少妇av一区二区三区| 国产在线观看一区二区三区| 欧美黑人xxxxx| 久久久久狠狠高潮亚洲精品| 日本伦理一区二区| 日韩中文字幕亚洲精品欧美| 国产亚洲激情视频在线| 在线免费观看毛片| 一区二区三区www污污污网站| 精品网站在线| 国产伦一区二区三区| 国产免费久久久| 国内免费久久久久久久久久久| 国精产品一品二品国精品69xx| av网站免费大全| 91精品国产乱码久久久久久久| 欧美一区二区免费观在线| 精品女同一区二区三区在线观看| 狠狠久久综合婷婷不卡| 精品视频中文字幕| 欧美s码亚洲码精品m码| 免费观看成年人视频在线观看| 天天av天天操| 日韩精品午夜视频| 日本黄色免费网址| 欧美日韩国产免费观看视频| 香蕉视频网页版| 99国产精品久久久久99打野战| 欧美三级电影网| 久久久精品国产99久久精品芒果| 色视频精品视频在线观看| 国内精品小视频在线观看| 欧美激情一区二区久久久| 在线观看欧美黄色| 亚洲精品午夜级久久久久| 欧美日韩国产a| 五月天精品在线| 精品人妻二区中文字幕| 久久99性xxx老妇胖精品| 99免费精品在线观看| 免费看av毛片| 亚洲区在线播放| 亚洲区小说区图片区| 97一区二区国产好的精华液| 红桃视频国产精品| 情侣偷拍对白清晰饥渴难耐| 99热这里只有精品3| 亚洲高清中文字幕| 欧美小视频在线| 妖精视频一区二区三区免费观看| 日韩 欧美一区二区三区| 亚洲在线观看免费视频| 精品无人区乱码1区2区3区免费| 色诱视频在线观看| 中文字幕狠狠干| 日韩精品一区二区三区老鸭窝| 亚洲女同在线| 快射av在线播放一区| 国产清纯美女被跳蛋高潮一区二区久久w| 波霸ol色综合网| av高清日电影| 成人性生交xxxxx网站| 免费无码国产v片在线观看| 国产福利视频在线观看| 91精品国产综合久久久久久蜜臀| 免费午夜视频在线观看| 日韩激情第一页| 国产99久久久久久免费看| 97国产精品videossex| 亚洲成av人片在线| 亚洲精品美女久久久| 无码人妻丰满熟妇区毛片18|