SQL中用函数代替游标的方法
创始人
2024-07-13 14:11:03
0

下面将为您介绍在SQL中如何使用函数代替游标,供您参考,希望对您学习SQL中函数的使用能够有所帮助。

因为update里不能用存储过程,然而要根据更新表的某些字段还要进行计算。我们常常采用游标的方法,这里用函数的方法实现。

  1. CREATE FUNCTION [DBO].[FUN_GETTIME] (@TASKPHASEID INT)   
  2. RETURNS FLOAT AS   
  3. BEGIN   
  4.   DECLARE @TASKID INT,  
  5.           @HOUR FLOAT,   
  6.           @PERCENT FLOAT,   
  7.           @RETURN FLOAT  
  8.   IF @TASKPHASEID IS NULL   
  9.   BEGIN  
  10.     RETURN(0.0)  
  11.   END  
  12.  
  13. SELECT @TASKIDTASKID=TASKID,@PERCENT=ISNULL(WORKPERCENT,0)/100   
  14. FROM TABLETASKPHASE   
  15. WHERE ID=@TASKPHASEID  
  16.  
  17. SELECT @HOUR=ISNULL(TASKTIME,0) FROM TABLETASK   
  18. WHERE ID=@TASKID  
  19.  
  20. SET @RETURN=@HOUR*@PERCENT  
  21. RETURN (@RETURN)  
  22. END  
  23.  
  24. 调用函数的存储过程部分  
  25. CREATE PROCEDURE [DBO].[PROC_CALCCA]  
  26. @ROID INT  
  27.   AS  
  28. BEGIN  
  29.   DECLARE @CA FLOAT  
  30.  
  31.   UPDATE TABLEFMECA   
  32.   SET   
  33.   Cvalue_M=    ISNULL(MODERATE,0)*ISNULL(FMERATE,0)*ISNULL(B.BASFAILURERATE,0)*[DBO].[FUN_GETTIME](C.ID)  
  34. FROM TABLEFMECA ,TABLERELATION B,TABLETASKPHASE C  
  35. WHERE ROID=@ROID AND TASKPHASEID=C.ID AND B.ID=@ROID  
  36.  
  37.   SELECT @CA=SUM(ISNULL(Cvalue_M,0)) FROM TABLEFMECA WHERE ROID=@ROID  
  38.  
  39. UPDATE TABLERELATION   
  40.   SET CRITICALITY=@CA  
  41.   WHERE ID=@ROID  
  42. END  
  43. GO  

 

 

 

【编辑推荐】

SQL中CHARINDEX函数的调用方法

SQL中的分析函数

创建SQL函数的实例

SQL中一个很好用的日期格式化函数

SQL中返回计算表达式的函数

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
规避非法攻击 用好路由器远程管... 单位在市区不同位置设立了科技服务点,每一个服务点的员工都通过宽带路由器进行共享上网,和单位网络保持联...
范例解读VB.NET获取环境变... VB.NET编程语言的使用范围非常广泛,可以帮助开发人员处理各种程序中的需求,而且还能对移动设备进行...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...