sql server 游标 写给自己
Declare @Id varchar(20) --定义两个局部变量 @id @name 全局变量是两个@@name
Declare @Name varchar(20)
Declare Cur Cursor For --定义一个游标
select id,name from temp1 --查询语句 返回id和name
Open Cur --打开游标
Fetch next From Cur Into @Id,@Name --将游标返回的值赋值给局部变量(提示:右边返回值是一条一条的返回的 next代表的是每次返回下一条)
While @@fetch_status=0 --定义一个while循环
Begin
Update temp Set [c3]=@Name where [id] like @Id+'%'
Fetch Next From Cur Into @Id,@Name
End
Close Cur
Deallocate Cur
create proc RF_AutoCreate_ProgramName @mineName varchar(20), --矿井名称
@excludeSystem varchar(500) --排除生成系统
as
declare @starStop varchar(20) -- 启停表达式
declare @warning varchar(20) -- 报警表达式
declare @warning_2 varchar(20) -- 报警表达式
begin
begin transaction --启动事务
delete from RF_ReportPointInfo_1# where CreateUser ='自动创建';
--为表达式赋值
set @starStop = 'BR';
set @warning = 'BA';
set @warning_2 = 'BF'; --定义遍历出来的表的数据
declare @rfName varchar(300); --报表类型
declare @ProgramName varchar(300); --方案名称
declare @sysCode varchar(300); --系统
declare @chsysCode varchar(300); --子系统
declare @Name varchar(300); --点名
declare @description varchar(300); --点描述
declare @dataType varchar(300); --点类型 if(isnull(@excludeSystem,'')<>'') --如果存在需要排除生成的系统
begin
Declare cur_printinfo Cursor For --创建游标select SystemName from Sys_SystemTable where ID = sysCode
select SystemName =(select SystemName from Sys_SystemTable where ID =(select SysClassify from Sys_ChildSystemTable where ID = sysCode)),ChSystemName =(select SysName from Sys_ChildSystemTable where ID = sysCode),
uc.OpcChannelName+'.'+uc.OpcDevName+'.'+p.Name as Name,[description],dataType
from PT_UsedChildSys as uc join Sys_PointInfo as p on uc.MineName=p.MineName and uc.sheetName=p.sheetName where p.MineName = @mineName and p.OriginalCode<>''
and not EXISTS(
SELECT distinct syscode FROM Sys_PointInfo
WHERE CHARINDEX(cast(syscode as varchar),LTRIM(@excludeSystem))>0 and p.sysCode=sysCode
)
order by sysCode desc
end
else
begin
--定义游标
Declare cur_printinfo Cursor For
select SystemName =(select SystemName from Sys_SystemTable where ID =(select SysClassify from Sys_ChildSystemTable where ID = sysCode)),ChSystemName =(select SysName from Sys_ChildSystemTable where ID = sysCode),
uc.OpcChannelName+'.'+uc.OpcDevName+'.'+p.Name as Name,[description],dataType
from PT_UsedChildSys as uc join Sys_PointInfo as p on uc.MineName=p.MineName and uc.sheetName=p.sheetName where p.MineName = @mineName and p.OriginalCode<>'' order by p.sysCode desc
end Open cur_printinfo
--移动或提取列值
Fetch From cur_printinfo into @sysCode,@chsysCode,@Name,@description,@dataType
--利用循环处理游标中的列值
While @@Fetch_Status=0
Begin
if(charindex(@starStop,@dataType)>0) --如果点类型是BR 则是布尔型点
begin
--启停数据
insert into RF_ReportPointInfo_1#(rfName,ProgramName,sysName,chsysName,ptsBewrite,pts,CreateUser,CreatDate) values('设备启停记录',isnull(@chsysCode,'')+'_设备启停记录',@sysCode,@chsysCode,@description,@Name,'自动创建',GETDATE());
insert into RF_ReportPointInfo_1#(rfName,ProgramName,sysName,chsysName,ptsBewrite,pts,CreateUser,CreatDate) values('设备启停统计',isnull(@chsysCode,'')+'_设备启停统计',@sysCode,@chsysCode,@description,@Name,'自动创建',GETDATE());
end
else if(charindex(@warning,@dataType)>0)
begin
--报警数据
insert into RF_ReportPointInfo_1#(rfName,ProgramName,sysName,chsysName,ptsBewrite,pts,CreateUser,CreatDate) values('报警记录',isnull(@chsysCode,'')+'_报警记录',@sysCode,@chsysCode,@description,@Name,'自动创建',GETDATE());
insert into RF_ReportPointInfo_1#(rfName,ProgramName,sysName,chsysName,ptsBewrite,pts,CreateUser,CreatDate) values('报警统计',isnull(@chsysCode,'')+'_报警统计',@sysCode,@chsysCode,@description,@Name,'自动创建',GETDATE());
end
else if(charindex(@warning_2,@dataType)>0)
begin
--报警数据
insert into RF_ReportPointInfo_1#(rfName,ProgramName,sysName,chsysName,ptsBewrite,pts,CreateUser,CreatDate) values('故障记录',isnull(@chsysCode,'')+'_故障记录',@sysCode,@chsysCode,@description,@Name,'自动创建',GETDATE());
insert into RF_ReportPointInfo_1#(rfName,ProgramName,sysName,chsysName,ptsBewrite,pts,CreateUser,CreatDate) values('故障统计',isnull(@chsysCode,'')+'_故障统计',@sysCode,@chsysCode,@description,@Name,'自动创建',GETDATE());
end --将游标下移
Fetch From cur_printinfo into @sysCode,@chsysCode,@Name,@description,@dataType
End
--关闭/释放游标
Close cur_printinfo
Deallocate cur_printinfo if @@error>0
begin
rollback transaction --出错了进行回滚事务
raiserror('出错了',16,1)
return
end
else
begin
commit transaction --正常运行提交事务
end
end
go exec RF_AutoCreate_ProgramName '柠条塔煤矿',''
sql server 游标 写给自己的更多相关文章
- SQL Server 游标运用:查看所有数据库所有表大小信息(Sizes of All Tables in All Database)
原文:SQL Server 游标运用:查看所有数据库所有表大小信息(Sizes of All Tables in All Database) 一.本文所涉及的内容(Contents) 本文所涉及的内容 ...
- SQL Server 游标运用:鼠标轨迹字符串分割
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 游标模板(Cursor Template) 鼠标轨迹字符串分割SQL脚本实现(SQL Code ...
- sql server 游标的简单用法
sql server游标: --定义游标 declare cursor1 cursor for select ID,Name from A --打开游标 open cursor1 declare @i ...
- SQL Server游标 C# DataTable.Select() 筛选数据 什么是SQL游标? SQL Server数据类型转换方法 LinQ是什么? SQL Server 分页方法汇总
SQL Server游标 转载自:http://www.cnblogs.com/knowledgesea/p/3699851.html. 什么是游标 结果集,结果集就是select查询之后返回的所 ...
- SQL Server 游标运用:查看一个数据库所有表大小信息(Sizes of All Tables in a Database)
原文:SQL Server 游标运用:查看一个数据库所有表大小信息(Sizes of All Tables in a Database) 一.本文所涉及的内容(Contents) 本文所涉及的内容(C ...
- 学习使用MS SQL Server游标(CURSOR)
说实的,使用MS SQL Server这样久,游标一直没有使用过.以前实现相似的功能,都是使用WHILE循环加临时表来实现.刚才有参考网上示例练习写了一下.了解到游标概念与语法. 下面代码示例中,先是 ...
- Sql Server 游标概念与实例
引言 先不讲游标的什么概念,看如下Sql Server2008 图例: 需求:两张表的O_ID是一一对应的,现在求将加薪的工资+原来的工资=现在的工资,也就是O_Salary=O_Salary+A_S ...
- 2009-04-19 22:40 SQL SERVER游标的讲解
游标和游标的优点 在数据库中,游标是一个十分重要的概念.游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结 果集中每次提取一条记录的机制.游标总 ...
- SQL Server游标(转)
清晰地介绍了SQL游标,很好的学习资料. 转自 http://www.cnblogs.com/knowledgesea/p/3699851.html 什么是游标 结果集,结果集就是select查询之后 ...
随机推荐
- 解决Can't connect to MySQL server on 'localhost' (10048)
解决Can't connect to MySQL server on 'localhost' (10048) 您使用的是Windows操作系统,此错误与一个注册表键值TcpTimedWaitDelay ...
- java封装好处和原则
/*封装好处 隐藏实际细节,提供公共的访问方式 提高了代码的复用性 提高安全性 封装原则 将不需要对外提供的内容都隐藏起来 把属性隐藏,提供公共方法对其访问.*/
- JVM内存管理------垃圾搜集器简介
引言 上一章我们已经探讨过GC的各个算法,那么垃圾搜集器是什么呢? 通俗的讲,使用编程语言将算法实现出来,产生的程序就是垃圾搜集器了.既然谈到了编程语言的实现,那么在讨论垃圾搜集器的时候,就已经涉及到 ...
- MySQL MHA 搭建&测试
一:背景介绍 MHA(Master HA)是一款开源的MySQL的高可用工具,能在MySQL主从复制的基础上,实现自动化主服务器故障转移.虽然MHA试图从宕机的主服务器上保存二进制日志,但并不是总是可 ...
- mysql 在windows下,使用 net start mysql 命令发生错误 服务名无效 或 1067
mysql 在windows下,使用 net start mysql 命令发生错误 :服务名无效 或 1067 先使用mysqld -install安装一下 删除data目录下的日志等文件(因为之前 ...
- java 深入技术二(Collection)
1. java集合 存储和管理多个java对象 包括很多java类和接口 Collection List Set ArrayList Lin ...
- [转]odoo常用openerp-server.conf配置参数详解
参数 说明 用法 addons_path addons模块的查找路径,多个路径用逗号分隔 addons_path = E:\GreenOdoo8.0\source\openerp\addons csv ...
- swap的应用两个数的交换
#include <stdio.h>//这儿表示的函数的输入输出头文件void swap(int x,int y);void swap_p(int *x,int *y);//表示调用一个方 ...
- LeetCode之226. Invert Binary Tree
------------------------------------- 反转树的基本操作. 可是下面那句话是什么鬼啊,这么牛掰的人都会有这种遭遇,确实抚慰了一点最近面试被拒的忧伤..... AC代 ...
- MongoDB游标操作(4)
游标是什么? 通俗的说,游标不是查询结果,而是查询的返回资源,或者接口. 通过这个接口,你可以逐条读取. 声明游标: var cursor = db.collectioName.find(query ...