介紹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
);