程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle存儲過程之數據庫中獲取數據實例

Oracle存儲過程之數據庫中獲取數據實例

編輯:關於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
);
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved