科技行者

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

知识库

知识库 安全导航

至顶网软件频道详细讲解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

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

    • 评论
    • 分享微博
    • 分享邮件
    闂傚倷绶¢崣搴ㄥ窗閺囩偐鏋庨柕蹇嬪灪婵ジ鏌曡箛瀣偓鏍綖閿燂拷

    濠电姷顣介埀顒€鍟块埀顒€缍婇幃妯诲緞閹邦剛鐣洪梺闈浥堥弲婊勬叏濠婂牊鍋ㄦい鏍ㄧ〒閹藉啴鏌熼悜鈺傛珚鐎规洘宀稿畷鍫曞煛閸屾粍娈搁梻浣筋嚃閸ㄤ即宕㈤弽顐ュС闁挎稑瀚崰鍡樸亜閵堝懎濮┑鈽嗗亝濠㈡ê螞濡ゅ懏鍋傛繛鍡樻尭鐎氬鏌嶈閸撶喎顕i渚婄矗濞撴埃鍋撻柣娑欐崌閺屾稑鈹戦崨顕呮▊缂備焦顨呴惌鍌炵嵁鎼淬劌鐒垫い鎺戝鐎氬銇勯弽銊ф噥缂佽妫濋弻鐔碱敇瑜嶉悘鑼磼鏉堛劎绠為柡灞芥喘閺佹劙宕熼鐘虫緰闂佽崵濮抽梽宥夊垂閽樺)锝夊礋椤栨稑娈滈梺纭呮硾椤洟鍩€椤掆偓閿曪妇妲愰弮鍫濈闁绘劕寮Δ鍛厸闁割偒鍋勯悘锕傛煕鐎n偆澧紒鍌涘笧閹瑰嫰鎼圭憴鍕靛晥闂備礁鎼€氱兘宕归柆宥呯;鐎广儱顦伴崕宥夋煕閺囥劌澧ù鐘趁湁闁挎繂妫楅埢鏇㈡煃瑜滈崜姘跺蓟閵娧勵偨闁绘劕顕埢鏇㈡倵閿濆倹娅囨い蹇涗憾閺屾洟宕遍鐔奉伓

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