Sybase:游标用法以及嵌套用法
Sybase:游标用法以及嵌套用法
游标示例一:
--Sybase游标示例一:
create PROCEDURE DBA.p_proc_test() ON EXCEPTION RESUME
begin
declare @table_name varchar(100);
declare @count varchar(100);
declare @rownumber int;
declare HISTORYDATA dynamic scroll cursor for select a.table_name ,a.count rownumber,number(*) from systable a,systable b,systable c order by a.count desc; open HISTORYDATA with hold;
fetch next HISTORYDATA into @table_name,@count,@rownumber;
while @@SQLSTATUS = 0 loop
insert into test_tmp values(@table_name,@count,@rownumber);
fetch next HISTORYDATA into @table_name,@count,@rownumber;
end loop;
close HISTORYDATA;
deallocate cursor HISTORYDATA; end
游标示例二:
--Sybase游标使用示例二(循环):
create PROCEDURE DBA.p_proc_test2() ON EXCEPTION RESUME
begin
declare @table_name varchar(100);
declare @count varchar(100);
declare @rownumber int;
declare @num int; declare HISTORYDATA dynamic scroll cursor for select a.table_name ,a.count rownumber,number(*) from systable a order by a.count desc;
set @num=(select 0);
while @num<=30 loop
open HISTORYDATA with hold;
fetch next HISTORYDATA into @table_name,@count,@rownumber;
while @@SQLSTATUS = 0 loop
insert into test_tmp2 values(@table_name,@count,@rownumber,getdate());
fetch next HISTORYDATA into @table_name,@count,@rownumber;
end loop;
close HISTORYDATA; set @num=(select @num+1);
end loop;
deallocate cursor HISTORYDATA;
end
游标示例三(嵌套):
--Sybase:游标嵌套用法
create PROCEDURE DBA.p_teset(@i_rq int)
begin
-- 声明局部变量(变量需要一开始声明)
declare @cur_pk_corp varchar(50);
declare @c_pk_corp varchar(50);
declare @c_orgname varchar(50);
declare @c_pk_org varchar(30);
declare @c_pk_deptdoc varchar(20);
declare @c_px int;
declare @c_px_new int;
-- 声明游标 (游标需要一开始声明)
--游标一
declare c_corp dynamic scroll cursor
for select a.pk_corp from t_corp a group by a.pk_corp order by a.pk_corp ;
--游标二
declare c_org dynamic scroll cursor
for select a.pk_corp, a.orgname, coalesce(b.pk_org,a.pk_org) as pk_org,a.pk_deptdoc,
(select convert(int,case when substring(max(t.pk_org),char_length(max(t.pk_org)) ,char_length(max(t.pk_org))) is null then '' else substring(max(t.pk_org),char_length(max(t.pk_org)) ,char_length(max(t.pk_org))) end) from dba.t_dim_org_fix t where t.pk_corp=a.pk_corp) as px
from t_corp a left outer join dba.t_org_fix b on a.pk_corp=b.pk_corp and a.pk_deptdoc=b.pk_deptdoc and a.pk_corp=@cur_pk_corp ;
--初始化参数
set @c_px = 0;
-- 打开游标
open c_corp with hold;
FETCH NEXT c_corp INTO @cur_pk_corp;
--循环一个游标
WHILE @@SQLSTATUS = 0 loop
set @c_px_new =1;
-- 循环所有行
-- 声明局部变量
-- 打开游标
open c_org with hold;
FETCH NEXT c_org INTO @c_pk_corp, @c_orgname, @c_pk_org, @c_pk_deptdoc, @c_px;
-- 循环所有行
WHILE @@SQLSTATUS = 0 loop
-- 循环所有行
set @c_px = @c_px + @c_px_new ;
set @c_px_new = @c_px_new +1;
insert into dba.t_org_fix(pk_org,hr_name,enable_date,disabled_date,remark,pk_corp,pk_deptdoc)
values(@pk_org||'X'||@c_px,@c_orgname,@i_rq,20991231,'', @c_pk_corp, @c_pk_deptdoc);
FETCH NEXT c_org INTO @c_pk_corp, @c_orgname, @c_pk_org, @c_pk_deptdoc, @c_px;
END loop;
-- 关闭游标
close c_org;
FETCH NEXT c_corp INTO @cur_pk_corp;
end loop;
-- 关闭游标
close c_corp ;
--释放资源(最后释放)
DEALLOCATE cursor c_org;
DEALLOCATE CURSOR c_corp;
end
Sybase:游标用法以及嵌套用法的更多相关文章
- Excel中IF函数的嵌套用法(多条件)
Excel中IF函数的嵌套用法(多条件) Excel中IF函数的嵌套用法(多条件) 函数格式:if(logical_test,value_if_true,value_if_false).其中: ...
- Sybase 存储过程中IF的用法
Sybase 存储过程中IF的用法 --@i_val 为参数 or @i_val is null then begin --执行内容 end; end if;
- heckboxlist详细用法、checkboxlist用法、checkboxlist
heckboxlist详细用法.checkboxlist用法.checkboxlist for (int i = 0; i < CheckBoxList1.Items.Count; i++) { ...
- python 字典和列表嵌套用法
python中字典和列表的使用,在数据处理中应该是最常用的,这两个熟练后基本可以应付大部分场景了.不过网上的基础教程只告诉你列表.字典是什么,如何使用,很少做组合说明. 刚好工作中采集promethe ...
- Oracle 游标Cursor 的基本用法
查询 SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELECT语句时,要与INTO子句一起使用,查询的 返回值被赋予INTO子句中的变量,变量的声明是在DELCARE中.SELECT ...
- Sql语句中Like嵌套用法
一般的Like用法: SELECT U_NAME FROM T_USER WHERE U_NAME LIKE '%A%' 但是,我此次like关键字后面的对应值是一个变量,需要用select语句来实现 ...
- 游标SQL Cursor 基本用法
http://www.cnblogs.com/Gavinzhao/archive/2010/07/14/1777644.html 1 table1结构如下 2 id int 3 name va ...
- 齐博x1标签实例:标签的嵌套用法,调用聚合数据
齐博标签非常强大,可以让不懂程序的你,轻松就能实现所见即所得. 下面跟大家讲解一下,最复杂的运用, 同时使用了union 动态变量参数 与 分页处理标签 比如下面这张图,不仅仅想调用圈子,还想同时调用 ...
- oracle游标循环的嵌套
完成批量修改user_tables中的所有表的栏位名(从MS SQL导入过来,发现大小写问题,造成很多麻烦) 存储过程见下: -- Created on 2012/3/14 by FREE decla ...
随机推荐
- 用n(0)次求一个数组里面最大子数组的和(数组可以输入负数)
今天老师布置了题目上的任务,可谓是杀死人脑细胞不偿命呐... 在课上叽叽咕咕的讨论了一节课也没有答案,只得出几个备选方案,一个是通过枚举法将数组里面的子数组和一个个列出来然后在进行比较,可想而知(n2 ...
- jquery取iframe中元素
采取方法: $("#iframe_path").contents().find(".select_path_hide").val(); DOM方法:父窗口操作I ...
- Mininet加强版——DOT(分布式OpenFlow试验平台)
前言 之前在做SDN实验的时候,需要用到包含2000+个交换机的fattree拓扑,当时用的是mininet,生成整个拓扑需要十五六个小时,最终在异常艰苦的环境下做完了实验,之后听说了有DOT(Dis ...
- 【Cygwin】Windows下使用linux命令
我参阅了这份文章: 让windows cmd也用上linux命令 原文时间有点久了,Cygwin也更新了... 所以我的做法简单了很多... 到Cygwin官网下载安装包:https://cygwin ...
- 【BZOJ4584】[Apio2016]赛艇 DP
[BZOJ4584][Apio2016]赛艇 Description 在首尔城中,汉江横贯东西.在汉江的北岸,从西向东星星点点地分布着个划艇学校,编号依次为到.每个学校都拥有若干艘划艇.同一所学校的所 ...
- centos6.5上搭建gitlab服务器(亲测可用哦)
最近的版本控制中,git可谓是脱缰的野马,一发不可收拾.当然git的设计模式也是愈发的成熟,让人刮目相看,完美解决了svn上的不足之处.在目前分布式横行的天下,git可谓是占得了一席之地. 废话少说, ...
- 2015-04-14——css3 @media
//判断横竖屏 @media screen and (min-aspect-ratio: 13/13) { body {background-color:red;}} //屏幕宽高比,必须是除数形式 ...
- Java 连接池的工作原理(转)
原文:Java 连接池的工作原理 什么是连接? 连接,是我们的编程语言与数据库交互的一种方式.我们经常会听到这么一句话“数据库连接很昂贵“. 有人接受这种说法,却不知道它的真正含义.因此,下面我将解释 ...
- linux虚拟机连不上网络
1.修改文件ifcfg-ens33 # 切换目录 [root@localhost ~]# cd /etc/sysconfig/network-scripts/ # 将ONBOOT修改为yes [roo ...
- Android系统移植与调试之------->如何添加一个adb wifi无线调试的功能【开发者选项】-【Wifi调试】
首先弄懂怎么设置adb wifi无线调试的功能,如下所示. 1. 手机端开启adb tcp连接端口 :/$setprop service.adb.tcp.port :/$stop adbd :/$st ...