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 游标 写给自己的更多相关文章

  1. SQL Server 游标运用:查看所有数据库所有表大小信息(Sizes of All Tables in All Database)

    原文:SQL Server 游标运用:查看所有数据库所有表大小信息(Sizes of All Tables in All Database) 一.本文所涉及的内容(Contents) 本文所涉及的内容 ...

  2. SQL Server 游标运用:鼠标轨迹字符串分割

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 游标模板(Cursor Template) 鼠标轨迹字符串分割SQL脚本实现(SQL Code ...

  3. sql server 游标的简单用法

    sql server游标: --定义游标 declare cursor1 cursor for select ID,Name from A --打开游标 open cursor1 declare @i ...

  4. SQL Server游标 C# DataTable.Select() 筛选数据 什么是SQL游标? SQL Server数据类型转换方法 LinQ是什么? SQL Server 分页方法汇总

    SQL Server游标   转载自:http://www.cnblogs.com/knowledgesea/p/3699851.html. 什么是游标 结果集,结果集就是select查询之后返回的所 ...

  5. SQL Server 游标运用:查看一个数据库所有表大小信息(Sizes of All Tables in a Database)

    原文:SQL Server 游标运用:查看一个数据库所有表大小信息(Sizes of All Tables in a Database) 一.本文所涉及的内容(Contents) 本文所涉及的内容(C ...

  6. 学习使用MS SQL Server游标(CURSOR)

    说实的,使用MS SQL Server这样久,游标一直没有使用过.以前实现相似的功能,都是使用WHILE循环加临时表来实现.刚才有参考网上示例练习写了一下.了解到游标概念与语法. 下面代码示例中,先是 ...

  7. Sql Server 游标概念与实例

    引言 先不讲游标的什么概念,看如下Sql Server2008 图例: 需求:两张表的O_ID是一一对应的,现在求将加薪的工资+原来的工资=现在的工资,也就是O_Salary=O_Salary+A_S ...

  8. 2009-04-19 22:40 SQL SERVER游标的讲解

    游标和游标的优点 在数据库中,游标是一个十分重要的概念.游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结 果集中每次提取一条记录的机制.游标总 ...

  9. SQL Server游标(转)

    清晰地介绍了SQL游标,很好的学习资料. 转自 http://www.cnblogs.com/knowledgesea/p/3699851.html 什么是游标 结果集,结果集就是select查询之后 ...

随机推荐

  1. [教程] 【玩转终端1:apt-get】

    进来工作比较清闲,所以写点东西,给喜欢折腾的朋友.本文及后面将要介绍的一些终端命令,其实对于玩过linux的人来说,是很基础的东西,我可能是班门弄斧了(拍砖的请轻点,有愿意补充/纠正的,本人求知不得) ...

  2. CPU时间片

    CPU时间片 为了提高程序执行效率,大家在很多应用中都采用了多线程模式,这样可以将原来的序列化执行变为并行执行,任务的分解以及并行执行能够极大地提高程序的运行效率. 但这都是代码级别的表现,而硬件是如 ...

  3. Reverse Integer

    Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 public cl ...

  4. sql单表中某一字段重复,取最近3条或几条数据

    order by a.uid,a.id; sql查询语句,针对需求:一个表中某一字段是有重复的数据,针对该字段相同的值只取最近的3条或要求的几条: --记录铭心!

  5. T-SQL函数总结

    T-SQL函数的类别和描述. 函数类别 作用 聚合函数 执行的操作是将多个值合并为一个值.例如COUNT.SUM.MIN 和 MAX. 配置函数 是一种标量函数,可返回有关配置设置的信息. 转换函数 ...

  6. 浅谈HTTP事务的一个过程

    一个腾讯在职的朋友问道,当我们在浏览器的地址栏输入 www.baidu.com ,然后回车,这一瞬间页面发生了什么?下面以谷歌浏览器一一解释. 一.域名解析 首先Chrome浏览器会解析www.bai ...

  7. Git-将已有的项目提交到Git

    准备工作:1. 安装Githttp://git-scm.com/download/2.申请一个GitHub或者coding账号(coding为国产,不需FQ呦.两者方法基本相同,本文以coding为例 ...

  8. 11 JSP/EL表达式/EL函数

    JSP      * 概述: JSP(Java Server Pages)与Java Servlet一样,是在服务器端执行的不同的是先由服务器编译部署成Servlet执行      * JSP的运行原 ...

  9. PHP 汉字数字互转(100以内)| PHP 汉字转数字 | PHP数字转汉字

    <?php function numDatabase(){ $numarr =array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,2 ...

  10. uva12546. LCM Pair Sum

    uva12546. LCM Pair Sum One of your friends desperately needs your help. He is working with a secret ...