Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2880755
  • 博文数量: 599
  • 博客积分: 16398
  • 博客等级: 上将
  • 技术积分: 6875
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-30 12:04
个人简介

WINDOWS下的程序员出身,偶尔也写一些linux平台下小程序, 后转行数据库行业,专注于ORACLE和DB2的运维和优化。 同时也是ios移动开发者。欢迎志同道合的朋友一起研究技术。 数据库技术交流群:58308065,23618606

文章分类

全部博文(599)

文章存档

2014年(12)

2013年(56)

2012年(199)

2011年(105)

2010年(128)

2009年(99)

分类: Oracle

2012-01-12 10:27:23


SQL> show user
USER 为 "SYS"
SQL> conn yansp/yansp
已连接。
SQL> create table test as select * from all_objects;
表已创建。
SQL> create table his_teat as select * from test where 1=0;
表已创建。
SQL> select count(1) from test;
  COUNT(1)
----------
     49588

SQL> select count(1) from his_test;
  COUNT(1)
----------
         0
Pro*C代码如下:
/home/cpicsrv/yansp > cat test.pc
#include
#include
exec sql include sqlca;
main()
{
  exec sql begin declare section;
     char *username="yansp";
     char *password="yansp";
     char *dbserver="10.223.18.116/yansp";
  exec sql end   declare section;
  exec sql whenever sqlerror  stop;
 
  exec sql connect :username identified by :password using :dbserver;
 
exec sql execute
declare
   type rowid_array_type is table of rowid
   index by pls_integer;
   rowid_array rowid_array_type;
  cursor cur_test is select rowid from test;
  begin
    open cur_test;
    loop
      fetch cur_test bulk collect into rowid_array limit 100;//每次处理100条
      exit when rowid_array.count=0;
      forall i in rowid_array.first..rowid_array.last
      insert into his_test
      select * from test where rowid=rowid_array(i);
      forall i in rowid_array.first..rowid_array.last
      delete from test where rowid=rowid_array(i);
      commit;
  end loop;
  close cur_test;
end;
end-exec;
 
  exec sql commit work release;
}
/home/cpicsrv/yansp > proc parse=none sqlcheck=full
test.pc
Pro*C/C++: Release 10.2.0.1.0 - Production on Thu Jan 12 11:13:29 2012
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
System default option values taken from: /home/oracle/oracle/product/10.2.0/client_1/precomp/admin/pcscfg.cfg
/home/cpicsrv/yansp > gcc $ORACLE_HOME/lib/libclntsh.so test.c -o test
/home/cpicsrv/yansp > ./test
 
 
SQL> select  count(1) from test;
  COUNT(1)
----------
         0
SQL> select count(1) from his_test;
  COUNT(1)
----------
     49588
 
 
 

 
阅读(1049) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~