当前位置:首页 > 系统运维 > 正文内容

SQL Server函数的两种实际用法

a8116255316年前 (2010-06-30)系统运维10

下面的文章主要分析的是 SQL Server函数的两种实际用法,以及对其在实际应用中我们经常能用到代码的介绍,以下就是SQL Server函数的两种实际用法具体的描述,希望在你今后的学习中会有所帮助。

SQL Server函数的两种用法(可以代替游标)

分析 SQL Server里函数用法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 @TASKIDTASKID=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_MISNULL(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  

分析 SQL Server函数用法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 @QXSISNULL(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)) AND ( ISNULL(MAXCOUNT,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函数用法的介绍,望你能有所收获。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://www.2345hao.cn/blog/index.php/post/21375.html

分享给朋友:

“SQL Server函数的两种实际用法” 的相关文章

windows 7系统的电脑发出嘟嘟嘟的声音该怎么解决?

windows 7系统的电脑发出嘟嘟嘟的声音该怎么解决?

在某些电脑中,机器内部蜂鸣器与系统的声音输出方案是相关联的,这样一来会导致当系统输出声音时,即使电脑没有连接外部音响或耳机,也会通过内置蜂鸣器发出“嘟嘟哔哔”的声音。这个问题主要出现在Windows 7电脑中,假如你的电脑恰好遇到了这样的问题,可参考下面的方法来解决: 1、在桌面“计算机”图标上右...

windows 7查看电脑近期使用情况确定有没有被他人使用

windows 7查看电脑近期使用情况确定有没有被他人使用

我一个朋友最近装装了Windows 7,他总感觉有人用了他的电脑,但是一直不确定,他想知道有没有人动用他的电脑,问我有没有办法 我说设置一下就行了: 启动Windows 7,在搜索栏中输入编辑组,马上就搜索到了编辑组策略,点击即可启动程序编辑组策略。依次展开组策略左侧树形列表的计算机配置/管理模...

Win 7系统中其他声音正常但酷狗音乐没声音怎么回事

Win 7系统中其他声音正常但酷狗音乐没声音怎么回事

故障现象: Windows 7酷狗软件无声音,系统声音正常。 原因分析: 1. 查看酷狗软件设置 2. 查看系统设置 解决方案: 1. Windows 7操作方法 如图:查看是否处于禁音状态   Windows 7系统声音正常酷狗音乐无声音 2. 查看设置音频输出是否...

windows 7系统开机后出现黑屏提示Windows无法启动

windows 7系统开机后出现黑屏提示Windows无法启动

一些用户的Windows 7系统开机后出现黑屏,代码为 Windows无法启动: WindowsSystem32ConfigSystem”。这个问题该如何修复呢?现在小编就给大家分析一下吧。 其实这个代码的意思是引导文件丢失了,引导文件(NTLDR)一般存放于C盘根目录下,是一个具有隐藏和只读属性...

windows 7为什么老掉线 windows 7使用迅雷或快车下载的时候老掉

windows 7为什么老掉线 windows 7使用迅雷或快车下载的时候老掉

经过几天的测试后发现,Windows 7用户反映的情况确实存在,但并没有达到“频繁”的情况。同时,也并非是迅雷或快车抢了带宽。(即便是抢了带宽,表现的形式也是页面打开慢,而非是掉线),寻找问题的原因过程中,我们认为是Windows 7系统对于网卡的电源管理的默认设置造成的。 下面,就以Window...

Ubuntu系统上挂载U盘和Windows分区问题的解决实例

Ubuntu系统上挂载U盘和Windows分区问题的解决实例

Ubuntu挂载U盘问题 复制代码代码如下: 老是说special device /dev/sdb1 does not exist,无比郁闷 复制代码代码如下:#fdisk /dev/sda 复制代码代码如下: 是有个 这个咚咚。。。。 复制代码代码如下: 最后: 复制代码代码如下:...