分析SQL Server里函数的两种用法
2025-10-29 18:30:33阅读量:9 字体:大 中 小
1.因为update里不能用存储过程,然而要根据更新表的某些字段还要进行计算。我们常常采用游标的方法,这里用函数的方法实现。
函数部分:
CREATE FUNCTION [DBO].[FUN_GETTIME] (@TASKPHASEID INT)
RETURNS FLOAT AS
BEGIN
DECLARE @TASKID INT,
@HOUR FLOAT,
@PERCENT FLOAT,
@RETURN FLOAT
IF @TASKPHASEID IS NULL
BEGIN
RETURN(0.0)
END
SELECT @TASKID=TASKID,@PERCENT=ISNULL(WORKPERCENT,0)/100
FROM TABLETASKPHASE
WHERE ID=@TASKPHASEID
SELECT @HOUR=ISNULL(TASKTIME,0) FROM TABLETASK
WHERE ID=@TASKID
SET @RETURN=@HOUR*@PERCENT
RETURN (@RETURN)
END
调用函数的存储过程部分:
CREATE PROCEDURE [DBO].[PROC_CALCCA]
@ROID INT
AS
BEGIN
DECLARE @CA FLOAT
UPDATE TABLEFMECA
SET
Cvalue_M= ISNULL(MODERATE,0)*ISNULL(FMERATE,0)
*ISNULL(B.BASFAILURERATE,0)*[DBO].[FUN_GETTIME](C.ID)
FROM TABLEFMECA ,TABLERELATION B,TABLETASKPHASE C
WHERE ROID=@ROID AND TASKPHASEID=C.ID AND B.ID=@ROID
SELECT @CA=SUM(ISNULL(Cvalue_M,0)) FROM TABLEFMECA WHERE ROID=@ROID
UPDATE TABLERELATION
SET CRITICALITY=@CA
WHERE ID=@ROID
END
GO
2.大家要根据某表的某些记录,先计算后求和,因为无法存储中间值,平时我们也用游标的方法进行计算。但sqlserver2000里支持:
SUM ( [ ALL | DISTINCT ] expression )
expression
是常量、列或函数,或者是算术、按位与字符串等运算符的任意组合。因此我们可以利用这一功能。
函数部分:
CREATE FUNCTION [DBO].[FUN_RATE] (@PARTID INT,@ENID INT,@SOURCEID INT,
@QUALITYID INT,@COUNT INT)
RETURNS FLOAT AS
BEGIN
DECLARE @QXS FLOAT, @G FLOAT, @RATE FLOAT
IF (@ENID=NULL) OR (@PARTID=NULL) OR (@SOURCEID=NULL) OR (@QUALITYID=NULL)
BEGIN
RETURN(0.0)
END
SELECT @QXS= ISNULL(XS,0) FROM TABLEQUALITY WHERE ID=@QUALITYID
SELECT @G=ISNULL(FRATE_G,0) FROM TABLEFAILURERATE
WHERE (SUBKINDID=@PARTID) AND( ENID=@ENID) AND ( DATASOURCEID=@SOURCEID)
AND( ( (ISNULL(MINCOUNT,0)=ISNULL(@COUNT,0)))
OR(ISNULL(@COUNT,0)>ISNULL(MAXCOUNT,0)))
SET @RATE=ISNULL(@QXS*@G,0)
RETURN (@RATE)
END
调用函数的存储过程部分:
CREATE PROC PROC_FAULTRATE
@PARTID INTEGER, @QUALITYID INTEGER, @SOURCEID INTEGER, @COUNT INTEGER,
@ROID INT, @GRADE INT,@RATE FLOAT=0 OUTPUTAS
BEGIN
DECLARE
@TASKID INT
SET @RATE=0.0
SELECT @TASKID=ISNULL(TASKPROID,-1) FROM TABLERELATION WHERE
ID=(SELECT PID FROM TABLERELATION WHERE ID=@ROID)
IF (@TASKID=-1) OR(@GRADE=1) BEGIN
SET @RATE=0
RETURN
END
SELECT @RATE=SUM([DBO].[FUN_RATE] (@PARTID,ENID,@SOURCEID,
@QUALITYID,@COUNT) *ISNULL(WORKPERCENT,0)/100.0)
FROM TABLETASKPHASE
WHERE TASKID=@TASKID
END
GO
函数还可以返回表等,希望大家一起讨论sqlserver里函数的妙用。
免责声明:
本文《分析SQL Server里函数的两种用法》版权归原作者所有,内容不代表本站立场!
如本文内容影响到您的合法权益(含文章中内容、图片等),请及时联系本站,我们会及时删除处理。
推荐阅读

无聊猿BAYC跌破10枚ETH、较历史高点蒸发93%!NFT还能重燃吗?
k6v数字认知网 - 区块链数字货币实时行情平台在上一轮牛市中,加密货币产业掀起NFT热潮。2021年4月,Yuga Labs推出Bored Ape Yacht Club(BAYC)成为最受欢迎的PF...
阅读: 18

ApeCoinDAO提案在泰国曼谷开设无聊猿主题饭店!APE支付房费、赋能BAYC
1oB数字认知网 - 区块链数字货币实时行情平台NFT蓝筹项目无聊猿(BAYC)生态代币APE的去中心化自治组织ApeCoinDAO,在19日发起了一项新提案AIP-448,计划在泰国曼谷市中心的黄金...
阅读: 27

Animoca Brands估值骤降75%!NFT、Web3游戏和元宇宙低迷
09y数字认知网 - 区块链数字货币实时行情平台Animoca Brands,这家加密科技巨头与投资狂热者,正面临市场估值的大幅下调。尽管拥有数十亿美元的资产,这家公司的二级市场价值却显示出明显的疲态...
阅读: 18

航天公司SERA合作Coinbase:计划在Base链上发行2种太空主题NFT
aD9数字认知网 - 区块链数字货币实时行情平台美国私人太空探索与研究机构SERA,目前正在与上市加密货币交易所Coinbase展开合作。SERA计划在以太坊Layer2网络Base链上,发行三种太空...
阅读: 18

特朗普开卖第四代NFT美国优先系列!每张售价99美元
BzI数字认知网 - 区块链数字货币实时行情平台美国共和党总统候选人特朗普在7月中旬时接受彭博采访时表示,他计划发布第四个NFT系列,他当时说道,他的前三个NFT系列都非常成功,现在打算再做一次,因为...
阅读: 56

史上最贵CryptoPunks 5822传以1500ETH转手!原持有者血亏2000万美元
9Wx数字认知网 - 区块链数字货币实时行情平台蓝筹NFT项目CryptoPunks中最贵,编号5822的NFT于今(19)日完成场外交易(OTC),创下历史性的销售纪录,该CryptoPunk的前持...
阅读: 31

OpenSea收SEC韦尔斯通知、认为NFT属于证券!代币BLUR、TNSR齐跳水
Omf数字认知网 - 区块链数字货币实时行情平台NFT交易平台OpenSea昨(28)晚传出重大利空消息,共同创办人兼执行长Devin Finzer在X上发文表示该平台已经收到来自美国证券交易委员会S...
阅读: 63

周星驰招募演员参与《大话大话西游》演出!必须持有Nobody NFT
HYD数字认知网 - 区块链数字货币实时行情平台在中国微短剧市场蓬勃发展之际,香港喜剧天王、同时也是亿万票房导演的周星驰,在今年也跨界推出网络微短剧,与抖音平台合作开发「九五二七剧场」。首部微短剧《金...
阅读: 25

什么是非同质化代币(NFT)?NFT常见的分类方式
目录什么是非同质化代币(NFT)?NFT常见的分类方式1.按用例分类2.按代币标准分类3.按平台或区块链分类4.按交互性分类基于用例的NFT类别1.个人资料头像(PFP)2.数字艺术3.音乐4.游戏内...
阅读: 37

公链Sui推出首款Web3掌机SuiPlay0x1!需要用加密货币付款购买
6Co数字认知网 - 区块链数字货币实时行情平台Sui公链开发商MystenLabs,今(3)日推出了首款Web3原生的掌上游戏机SuiPlay0x1,目前预订已经开放,预计将于2025上半年出货。6...
阅读: 42
猜你喜欢
托管银行上诉失败:法院支持美联储拒绝加密货币账户申请
2025-11-04

XRP ETF审批进入倒计时:Bitwise提交最终修订案,或于11月底前获批
2025-11-04

投资5000美元购买Cardano,15年后可能获得怎样的回报?
2025-11-04

狗狗币进军主流市场——体育场和球衣都换上了加密货币主题的服装
2025-11-04

今日比特币新闻:比特币11万美元十字路口:突破还是熊市回调?
2025-11-04

1.5亿美元资产冻结,144亿美元比特币流向——陈志加密货币丑闻内幕
2025-11-04

罗伯特·清崎选择比特币和以太坊作为抵御大规模崩盘的盾牌
2025-11-04
