| 導購 | 订阅 | 在线投稿
分享
 
 
當前位置: 王朝網路 >> oracle >> Oracle數據庫中獲取數據的存儲過程示例
 

Oracle數據庫中獲取數據的存儲過程示例

2008-08-06 07:16:30  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
 
  >>從一個表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;

  /
 
 
 
上一篇《從DBA到Oracle Applications DBA的轉變過程》
下一篇《Oracle DBMS_JOB:每隔特定時間執行特定任務》
 
 
 
日版寵物情人插曲《Winding Road》歌詞

日版寵物情人2017的插曲,很帶節奏感,日語的,女生唱的。 最後聽見是在第8集的時候女主手割傷了,然後男主用嘴幫她吸了一下,插曲就出來了。 歌手:Def...

兄弟共妻,我成了他們夜裏的美食

老鍾家的兩個兒子很特別,就是跟其他的人不太一樣,魔一般的執著。兄弟倆都到了要結婚的年齡了,不管自家老爹怎麽磨破嘴皮子,兄弟倆說不娶就不娶,老父母爲兄弟兩操碎了心...

如何磨出破洞牛仔褲?牛仔褲怎麽剪破洞?

把牛仔褲磨出有線的破洞 1、具體工具就是磨腳石,下面墊一個硬物,然後用磨腳石一直磨一直磨,到把那塊磨薄了,用手撕開就好了。出來的洞啊很自然的。需要貓須的話調幾...

我就是掃描下圖得到了敬業福和愛國福

先來看下敬業福和愛國福 今年春節,支付寶再次推出了“五福紅包”活動,表示要“把欠大家的敬業福都還給大家”。 今天該活動正式啓動,和去年一樣,需要收集“五福”...

冰箱異味産生的原因和臭味去除的方法

有時候我們打開冰箱就會聞到一股異味,冰箱裏的這種異味是因爲一些物質發出的氣味的混合體,聞起來讓人惡心。 産生這些異味的主要原因有以下幾點。 1、很多人有這種習...

《極品家丁》1-31集大結局分集劇情介紹

簡介 《極品家丁》講述了現代白領林晚榮無意回到古代金陵,並追隨蕭二小姐化名“林三”進入蕭府,不料卻陰差陽錯上演了一出低級家丁拼搏上位的“林三升職記”。...

李溪芮《極品家丁》片尾曲《你就是我最愛的寶寶》歌詞

你就是我最愛的寶寶 - 李溪芮 (電視劇《極品家丁》片尾曲) 作詞:常馨內 作曲:常馨內 你的眉 又鬼馬的挑 你的嘴 又壞壞的笑 上一秒吵鬧 下...

烏梅的功效與作用以及烏梅的食用禁忌有哪些?

烏梅,又稱春梅,中醫認爲,烏梅味酸,性溫,無毒,具有安心、除熱、下氣、祛痰、止渴調中、殺蟲的功效,治肢體痛、肺痨病。烏梅泡水喝能治傷寒煩熱、止吐瀉,與幹姜一起制...

什麽是脂肪粒?如何消除臉部脂肪粒?

什麽是脂肪粒 在我們的臉上總會長一個個像脂肪的小顆粒,弄也弄不掉,而且顔色還是白白的。它既不是粉刺也不是其他的任何痘痘,它就是脂肪粒。 脂肪粒雖然也是由油脂...

網絡安全治理:國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰受害者

來源:中國青年報 新的攻擊方法不斷湧現,黑客幾乎永遠占據網絡攻擊的上風,我們不可能通過技術手段杜絕網絡攻擊。國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰...

 
 
 
>>從一個表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; /
󰈣󰈤
 
 
 
  免責聲明:本文僅代表作者個人觀點,與王朝網路無關。王朝網路登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
 
竹林裏的甜美養眼美女
MM尖尖的下巴
靓麗的草根美女
超靓迷人的大眼睛美女
海南(二)
霧繞三清山
Oldtime
美麗婺源
 
>>返回首頁<<
 
 熱帖排行
 
 
 
 
© 2005- 王朝網路 版權所有