科技行者

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

知识库

知识库 安全导航

至顶网软件频道分析 SQL Server里函数的两种用法(2)

分析 SQL Server里函数的两种用法(2)

  • 扫一扫
    分享文章到微信

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

SQL Server里函数的两种用法与些同时这两种用法可以代替游标。

作者:tech.ddvip.com 来源:tech.ddvip.com 2007年9月1日

关键字: 函数 SQL Server SQL Server 各版本 数据库

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

函数部分:

以下是引用片段:

  
    CREATEFUNCTION[DBO].[FUN_RATE]
    (@PARTIDINT,@ENIDINT,@SOURCEIDINT,
    @QUALITYIDINT,@COUNTINT)
  RETURNSFLOATAS
  BEGIN
  DECLARE@QXSFLOAT,@GFLOAT,@RATEFLOAT
  IF(@ENID=NULL)OR(@PARTID=NULL)OR(@SOURCEID=NULL)OR(@QUALITYID=NULL)
  BEGIN
  RETURN(0.0)
  END
  SELECT@QXS=ISNULL(XS,0)FROMTABLEQUALITYWHEREID=@QUALITYID
  SELECT@G=ISNULL(FRATE_G,0)FROMTABLEFAILURERATE
  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

调用函数的存储过程部分:

以下是引用片段:

  CREATEPROCPROC_FAULTRATE
  @PARTIDINTEGER,@QUALITYIDINTEGER,@SOURCEIDINTEGER,
    @COUNTINTEGER,@ROIDINT,@GRADEINT,@RATEFLOAT=0OUTPUTAS
  BEGIN
  DECLARE
  @TASKIDINT
  SET@RATE=0.0
  SELECT@TASKID=ISNULL(TASKPROID,-1)
    FROMTABLERELATIONWHEREID=(SELECTPIDFROMTABLERELATIONWHEREID=@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)
  FROMTABLETASKPHASE
  WHERETASKID=@TASKID
  END
  GO

函数还可以返回表等,希望大家一起讨论SQL Server里函数的妙用。

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

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

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