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:游标用法以及嵌套用法的更多相关文章

  1. Excel中IF函数的嵌套用法(多条件)

    Excel中IF函数的嵌套用法(多条件)   Excel中IF函数的嵌套用法(多条件)   函数格式:if(logical_test,value_if_true,value_if_false).其中: ...

  2. Sybase 存储过程中IF的用法

    Sybase 存储过程中IF的用法 --@i_val 为参数 or @i_val is null then begin --执行内容 end; end if;

  3. heckboxlist详细用法、checkboxlist用法、checkboxlist

    heckboxlist详细用法.checkboxlist用法.checkboxlist for (int i = 0; i < CheckBoxList1.Items.Count; i++) { ...

  4. python 字典和列表嵌套用法

    python中字典和列表的使用,在数据处理中应该是最常用的,这两个熟练后基本可以应付大部分场景了.不过网上的基础教程只告诉你列表.字典是什么,如何使用,很少做组合说明. 刚好工作中采集promethe ...

  5. Oracle 游标Cursor 的基本用法

    查询 SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELECT语句时,要与INTO子句一起使用,查询的 返回值被赋予INTO子句中的变量,变量的声明是在DELCARE中.SELECT ...

  6. Sql语句中Like嵌套用法

    一般的Like用法: SELECT U_NAME FROM T_USER WHERE U_NAME LIKE '%A%' 但是,我此次like关键字后面的对应值是一个变量,需要用select语句来实现 ...

  7. 游标SQL Cursor 基本用法

    http://www.cnblogs.com/Gavinzhao/archive/2010/07/14/1777644.html 1 table1结构如下 2 id    int 3 name  va ...

  8. 齐博x1标签实例:标签的嵌套用法,调用聚合数据

    齐博标签非常强大,可以让不懂程序的你,轻松就能实现所见即所得. 下面跟大家讲解一下,最复杂的运用, 同时使用了union 动态变量参数 与 分页处理标签 比如下面这张图,不仅仅想调用圈子,还想同时调用 ...

  9. oracle游标循环的嵌套

    完成批量修改user_tables中的所有表的栏位名(从MS SQL导入过来,发现大小写问题,造成很多麻烦) 存储过程见下: -- Created on 2012/3/14 by FREE decla ...

随机推荐

  1. 第10步:DBCA创建实例

    注意,创建磁盘组时需要以oracle用户身份执行,在那之前可能需要以root身份执行xhost+,即命令: 代码1 [root@sgdb1~]# xhost+ [root@sgdb1~]# su - ...

  2. 如何正确使用Google搜索

    “” 双引号表示完全匹配,结果中必须出现与搜索文本完全相同的内容 A -B 搜索包含A但不包含B的结果(请注意A后面的空格不能省略) filetype 搜索对应类型的文件.例如:中国防火墙 filet ...

  3. CentOS7防火墙设置--iptables

    CentOS7默认使用的是firewalld而不是之前的iptables.需要先停用firewalld. systemctl stop firewalld 安装  iptables 服务 yum -y ...

  4. 【BZOJ4543】[POI2014]Hotel加强版 长链剖分+DP

    [BZOJ4543][POI2014]Hotel加强版 Description 同OJ3522数据范围:n<=100000 Sample Input 7 1 2 5 7 2 5 2 3 5 6 ...

  5. ralink雷灵RT5370 for mac ox 10.8 驱动

    博主2013年一月份安装了黑苹果发现 1000BGN 这斯全球无解. 在多米网上买了个 ralink5370 芯片的网卡.结果好多时候,总是闪退纠结ing 最后找到在官网上找到一个驱动. 目测网速还可 ...

  6. 170208、用Navicat自动备份mysql数据库

    数据库备份很重要,很多服务器经常遭到黑客的恶意攻击,造成数据丢失,如果没有及时备份的话,后果不堪设想. 一:备份的目的: 做灾难恢复:对损坏的数据进行恢复和还原 需求改变:因需求改变而需要把数据还原到 ...

  7. 【IDEA】本地新建Maven项目+配置Git和GitHub+代码上传和拉取到GitHub+其他IDEA和GitHub实战

    一.本地新建Maven项目并启动成功 1. 按照IDEA提供的模板,构建一个maven webapp的模板项目. 一路Next,到最后的finish.如下图. 2. 新建Tomcat,启动刚建立的项目 ...

  8. c# ,socket编程的一些常用方法

    1 命名空间 需要添加的命名空间 using System.Net; using System.Net.Socket; 2 构造新的socket对象 socket原型: public socket ( ...

  9. 关于增强for循环和普通for循环是否需要判断为null的情况

    1.增强for循环: public static void main(String[] args) { List<Object> list = null; for(Object s : l ...

  10. centos7开机启动tomcat7

    1.进入tomcat/bin vi setenv.sh      (原来没有这个文件,需要创建出来) 添加 #add tomcat pid CATALINA_PID="$CATALINA_B ...