科技行者

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

知识库

知识库 安全导航

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

SQL Server中“函数”的两种用法

  • 扫一扫
    分享文章到微信

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

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

作者:网页教学网 来源:天新网 2008年3月25日

关键字: 数据库 Mssql SQL SQL Server

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

函数部分:
  

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))
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

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

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

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