专业的信息化与通信融合产品选型平台及垂直门户
注册 登陆 设为首页 加入收藏
首页 企业新闻 招标信息 行业应用 厂商专区 活动 商城 中标信息

资讯
中心

新闻中心 人物观点
厂商专区 市场分析
行业
应用
政府机构 能源产业 金融机构
教育科研 医疗卫生 交通运输
应用
分类
统一协作 呼叫客服 IP语音 视频会议 智能管理 数据库
数字监控 信息安全 IP储存 移动应用 云计算 物联网

TOP

Oracle数据库中获取数据的存储过程示例
2011-05-26 11:10:53 来源:帮考网 作者:【
关键词:Oracle 数据库
 
Oracle数据库中获取数据的存储过程示例,对于表A和表B两个表结构完全相同的话〔字段个数,相应字段的类型等等〕,可以使用。

  Oracle数据库中获取数据的存储过程示例,对于表A和表B两个表结构完全相同的话〔字段个数,相应字段的类型等等〕,可以使用。

  从一个表A的取得数据插入另一个表B中?

  (1)对于表A和表B两个表结构完全相同的话〔字段个数,相应字段的类型等等〕,可以使用

  INSERT INTO B SELECT * FROM A;

  INSERT INTO B(field1,field2,field3) select A.field1,A.field2,A.field3 from A;

  (2) 对于两个表如果字段数不一样,但是有几个字段的结构一样时〔类似于父子关系〕,必须使用 INSERT INTO B(field1,field2) select A.field1,A.field2 from A;

  1.用带参数的游标实现insert功能:

  CREATE OR REPLACE PROCEDURE GET_DATA(

  -- 参数列表:

  n_task_id IN number, --任务编号

  v_task_name IN varchar2, --任务名称

  v_name IN varchar2 -- 名称

  )

  -----------------------------------------------

  -- PROCEDURE名 :GET_DATA --

  -- 処理内容 :从数据源表取得符合条件的的数据插入到目标数据表: --

  -- 引数 :n_tas_id 任务ID, --

  -- v_task_namek 任务名称, --

  -- v_bdw_name 对数据源表限制条件:本地网名称 --

  -----------------------------------------------

  IS

  --插入行数控制

  i_count number(5);

  --取数据游标:DATA_CUR(IN_NAME)

  --参数:本地网名称:IN_NAME

  CURSOR DATA_CUR(IN_NAME VARCHAR2) IS /**注意:参数的定义中不带精度**/

  SELECT *

  FROM GET_DATA_SRC A

  WHERE A.NAME = IN_NAME;

  BEGIN

  --计数器,控制插入行数

  i_count := 0;

  --循环插入数据

  FOR MYCUR IN DATA_CUR(v_name) LOOP

  INSERT INTO ABC(

  ROW_ID,

  TASK_ID,

  TASK_NAME,

  GET_DATA_DT,

  CUST_ID,

  ASSIGN_FLAG,

  DEAL_DATE

  )VALUES(

  SEQ_KD.NEXTVAL,

  N_TASK_ID,

  V_TASK_NAME,

  SYSDATE,

  MYCUR.CUST_ID,

  ’N’,

  NULL

  );

  --程序试用阶段,以后会删除satrt

  i_count := i_count + 1;

  IF i_count >100 THEN

  COMMIT;

  RETURN;

  END IF;

  --程序试用阶段,以后会删除end

  END LOOP;

  --数据commit,程序调试阶段避免大量数据,暂时关闭

  --commit;

  --------例外处理部分----------------------------

  EXCEPTION

  WHEN OTHERS THEN

  rollback;

  END SRBZ_GET_SRBZ_KD_SPEED;

  /

  2.使用语句拼接法实现insert功能:

  注:2.1字符串常量的引号 2.2 变量的引号

  CREATE OR REPLACE PROCEDURE ABC(

  -- 参数列表:

  task_id IN number, --任务编号

  task_name IN varchar2, --任务名称

  in_NAME IN varchar2 --名称

  )

  --------------------------- PROCEDURE名 :ABC

  -- 処理内容 :从数据源表取得符合条件的的数据插入到目标数据表

  -- 引数 :table_src 数据源表

  -- table_to 数据插入目标表

  -- in_bdw_name 对数据源表限制条件:本地网名称

  ---------------------------------------------

  IS

  --INSERT_STRING 动态生成的insert语句存放处

  INSERT_STRING VARCHAR2(1000);

  --数据源表存放处

  tableSrc varchar2(500);

  --数据插入目标表存放处

  tableTarget varchar2(1000);

  --数据目标表需要插入值的字段存放处

  StrFields varchar2(1000);

  BEGIN

  --数据源表为:AAA

  tableTarget := ’ BBB ’;

  --数据来源

  tableSrc := ’ select seq_kd.nextval,sysdate,’||task_id||’,’’’||task_name||’’’, ’

  ||’A.* from AAA A’

  ||’ WHERE A.value=’||’’’IP-VPDN’’’

  ||’AND A.remark IS NULL’;

  --需要插入的字段

  StrFields := ’(ROW_ID,GET_DATA_DT,TASK_ID,TASK_NAME,COST_CTR,SERVICE_ID,’

  ||’SI_ADDR,SI_SERVER_ID)’;

  --生成insert语句

  INSERT_STRING := ’INSERT INTO ’ || tableTarget || StrFields || tableSrc ;

  --执行insert语句

  execute immediate INSERT_STRING;

  --提交事务

  commit;

  --------例外处理部分-----------

  EXCEPTION

  --异常的抛出

  WHEN OTHERS THEN

  --DBMS_OUTPUT.PUT_LINE(’处理过程中出错,程序退出,未执行相关内务’);

  rollback;

  END SRBZ_GET_SRBZ_KD_GSVPDN_FREE;

      

责任编辑:admin
免责声明:以上内容转载互联网平台或企业单位自行提供,对内容的真实性、准确性和合法性不负责,Voipchina网对此不承担任何法律责任。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部

上一篇荷兰网络电话将收费 终结免费午餐..
下一篇视频会议触“电” 紧急开启电力应..

热门文章

图片主题

最新文章

相关文章

广告位

Copyright@2003-2009 网络通信中国(原VoIP中国) 版权所有
联系方式:503927495@qq.com
  京ICP备05067673号-1 京公网安1101111101259

《合作通告》

本站因快速发展需要,有共赢合作、战略创投意向的个人或机构,请联系咨询:
(电话)010-69397252、13911442656(v)
(邮箱)503927495@qq.com
我知道了