科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道详细讲解SQL Server中“函数”的两种用法

详细讲解SQL Server中“函数”的两种用法

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文主要主要讲解了SQL Server数据库中函数的两种用法。

作者:赛迪网 91971 来源:天新网 2008年3月25日

关键字: 数据库 Mssql SQL 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 @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. 我们要根据某表的某些记录,先计算后求和,因为无法存储中间值,平时我们也用游标的方法进行计算。但SQL Server 2000里支持。

SUM ( [ ALL | DISTINCT ] expression )
expression

是常量、列或函数,或者是算术、按位与字符串等运算符的任意组合。因此我们可以利用这一功能。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章