服务器之家

服务器之家 > 正文

Oracle存储过程之数据库中获取数据实例

时间:2019-10-30 18:54     来源/作者:Oracle教程网

怎样才能将在表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 
); 

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
返回顶部