文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | firefox | WPS | 杀毒软件 | Picasa
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形图像 办公软件 媒体动画 精文荟萃 常用软件 网页编程 技术开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程MSSQLSQL Server中函数的用法两种
精品推荐
特别推荐
·常用SQL语句词典
·结束SQL注入隐患3招
·掌握SQL Server数据库的实用技巧
·SQL的简单查询
·快速解决SQL Server“安全疑难”相关问题
·SQL Server 2005:你应知道的13件事
·实例解析:减少SQL日志大小的三个好方法
·使用SQL2000将现有代码作为Web服务提供
·sql server 2000数据库置疑的解决方法
·SQL Server安全问题全攻略之口令
·XP上不能安装MicrosoftSQLSERVER2000吗
·解析Microsoft Sql Server中的like语句
·推荐;适合SQL初学者学习的SQL FAQ集锦
·SQL Server 2005 中的分区表和索引
·查询及删除重复记录的方法大全
·详细介绍优化SQL Server 2000的设置
·关于SQL SERVER 日志满的处理方法
·使用SQL Server 2000索引视图提高性能
·SQL server 2005安装问题汇总
·解决用sa登录sql 2005失败的问题
热点TOP10
·SQL Server 2005免费版本下载排行居首
·常用SQL语句词典
·在SQL Server 2000里设置和使用数据库复制
·SQL Server 2005 中的分区表和索引
·SQL server 2005安装问题汇总
·SQL的简单查询
·Sql数据库MDF数据文件数据库恢复
·SQL语法大全
·sql server 2005 排序规则与大小写敏感
·查询及删除重复记录的方法大全
·sql server日期时间函数
·在Windows xp系统上安装了SQL server服务器版
·sql server 2000数据库置疑的解决方法
·Sql server存储过程和C#分页类简化你的代码
·SQL Server 练习题
·SQL Server 2000安装和基本框架
·SQL安装问题总结
·SQL2000 数据库安装说明
·详细介绍优化SQL Server 2000的设置
·解决方案 用户 sa 登录失败

SQL Server中函数的用法两种

日期:2007年12月17日 作者: 查看:[大字体 中字体 小字体]


本文主要主要讲解了SQL Server数据库中函数的两种用法,具体内容请参考下文:

1. 由于update里不能用存储过程,并且由于根据更新表的某些字段还要进行计算。所以很多人采用的是游标的方法,在这里我们可以用函数的方法实现。

函数部分:

Word-WRAP: break-word" bgColor=#fdfddf>

  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

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

函数部分:
  
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

(出处:清风下载学院






上一篇:sqlldr加载数据到不同表的问题

下一篇:电子商务网站搜索引擎优化方法

SQL Server中函数的用法两种 相关文章:
·在MySQL数据库增加新用户权限简介
·学习SQL语句之SQL语句大全
·SQL Server 2005免费版本下载排行居首
·Win下的Apache+PHP+MySql+虚拟主机设置全功略
·Windows 2003安全设置大全-IIS、终端服务、FTP、SQL的配置
·常用SQL语句词典
·在SQL Server 2000里设置和使用数据库复制
·SQL Server 2005 中的分区表和索引
·Windows XP下PHP+MySQL环境搭建
·C#源码读取excel数据到程序中-SQL SERVER-到dataset中
SQL Server中函数的用法两种 相关软件:
·SQL Server 2000 基础系列课程视频
·Microsoft.SQL.Server.2005.简体中文开发版
·逐步精通数据库 sql server 视频教程
·MS SQL Server 2000 四合一
·SQL/MYSQL/数据库教程专栏
·逐步精通数据库 MYSQL
·MSSQl 2000简体中文企业版
·Microsoft SQL Server 2005 Enterprise Edition SP1简体中文企业版
·Microsoft SQL Server 2000 超级管理手冊(HTM)
·仿淘宝多用户网络商城购物系统正式sql版

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn