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. php中数组中&的问题

    1.代码: <?php $arr = array('one','two','three'); foreach ($arr as $value){ echo 'Value:'.$value.'&l ...

  2. PrintArea打印,@media screen解决移动web开发的多分辨率问题,@media print设置打印的样式

    PrintArea打印,局部DIV打印插件,依赖JQuery. github:https://github.com/RitsC/PrintArea 当打印时需要临时改变页面布局,可以使用 @media ...

  3. ViewPager滑动引导页

    ViewPager实现Animation动画引导页   http://blog.csdn.net/ye_scofield/article/details/44831357 SurfaceView实现动 ...

  4. http协议详解(1)

    HTTP协议报文格式 接下来我们看看HTTP协议(Hypertext Transfer Protocol――超文本传输协议)浏览器端(客户端)向WEB服务器端访问页面的过程和HTTP协议报文的格式. ...

  5. 【APIO2014】Palindromes

    #103. [APIO2014]Palindromes 统计 描述 提交 自定义测试 给你一个由小写拉丁字母组成的字符串 ss.我们定义 ss 的一个子串的存在值为这个子串在 ss 中出现的次数乘以这 ...

  6. 改变label中的某字体颜色

    NSString *allString=@"你家在哪里,需要我送你么"; NSString *subString=@"在哪里"; UILabel *string ...

  7. CURLOPT_SSL_VERIFYPEER CURLOPT_SSL_VERIFYHOST

    w /** * Set curl options relating to SSL. Protected to allow overriding. * @param $ch curl handle */ ...

  8. nodejs unit test related----faker-cli, sinonjs, mock/stub

    http://www.tuicool.com/articles/rAnaYvn http://www.tuicool.com/articles/Y73aYn (contrast stub and mo ...

  9. 聊聊 Java 中日期的几种常见操作 —— 取值、转换、加减、比较

    Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几分钟起身活动一下,去泡杯咖啡,便是极好的,嘿嘿.当然,我只提 ...

  10. Collections工具类的使用

    创建实体类 public class News implements Comparable { private int id; //新闻编号 private String title; //新闻标题 ...