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查询之后 ...
随机推荐
- python基础三
多级菜单 多级菜单 可依次选择进入各子菜单 所需新知识点:列表.字典 #!/usr/bin/env python # -*- coding: utf-8 -*- menu = { '北京':{ '海淀 ...
- MSSQL-to-MySQL v5.3, 从MSSQL迁移到mySQL的最佳工具
将现有的MSSQL数据库迁移到MySQL数据库,尝试了很多种工具 MySQL Workbench / MSSQL to MySQL Export / DB Converter / openDBcopy ...
- RobotFrameWork(四)变量运算与Evaluate
一.特殊变量运算: 执行结果: 二.Evaluate使用 函数释义:Evaluate是执行Python表达式,并返回执行结果 示例1: 执行结果: 示例2: 执行结果:
- Python:如何删除文件中的空白行?
def delblankline(infile,outfile): infopen = open(infile,'r') outfopen = open(outfile,'w') lines = in ...
- 关于Ajax工作原理
1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...
- Spring + Jedis集成Redis(单例redis数据库)
这几天没事,就把之前学习的redis代码整理一遍,废话不多说,上步骤. 1.pom.xml引入资源: <dependency> <groupId>org.springframe ...
- 单位圆盘的全纯自同构群Aut B(0,1)
利用Schwarz引理可以求出单位圆盘$B(0,1)$的全纯自同构群${\rm Aut}B(0,1)$. 任取$a\in B(0,1)$,记$$\varphi_{a}(z)=\frac{a-z}{1- ...
- 卸载 ibus 使Ubuntu16.04任务栏与启动器消失 问题解决
经查证是unity误卸载了,我使用了命令: sudo apt-get remove --purge ibus 解决方法是: 使用以下命令:重置compiz: dconf reset -f /org/c ...
- mysql explain用法
explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上explain就可以了,如: explai ...
- Pyqt 动态的添加控件
Pyqt 动态的添加控件 # -*- coding: utf-8 -*- from PyQt4.QtCore import * from PyQt4.QtGui import * import sys ...