科技行者

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

知识库

知识库 安全导航

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

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

  • 扫一扫
    分享文章到微信

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

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

作者:赛迪网 91971 来源:天新网 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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

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