Oracle存儲(chǔ)過(guò)程之?dāng)?shù)據(jù)庫(kù)中獲取數(shù)據(jù)實(shí)例
更新時(shí)間:2008年09月12日 18:18:05 作者:
介紹Oracle數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)的存儲(chǔ)過(guò)程示例 ,在表A取得的數(shù)據(jù)插入另一個(gè)表B中
怎樣才能將在表A取得的數(shù)據(jù)插入另一個(gè)表B中?
?。?)對(duì)于表A和表B兩個(gè)表結(jié)構(gòu)完全相同的話〔字段個(gè)數(shù),相應(yīng)字段的類型等等〕,可以使用
insert INTO B select * FROM A;
insert INTO B(field1,field2,field3) select A.field1,A.field2,A.field3 from A;
?。?) 對(duì)于兩個(gè)表如果字段數(shù)不一樣,但是有幾個(gè)字段的結(jié)構(gòu)一樣時(shí)〔類似于父子關(guān)系〕,必須使用 insert INTO B(field1,field2) select A.field1,A.field2 from A;
1.用帶參數(shù)的游標(biāo)實(shí)現(xiàn)insert功能:
create OR REPLACE PROCEDURE GET_DATA(
-- 參數(shù)列表:
n_task_id IN number, --任務(wù)編號(hào)
v_task_name IN varchar2, --任務(wù)名稱
v_name IN varchar2 -- 名稱
)
-----------------------------------------------
-- PROCEDURE名 :GET_DATA --
-- 処理內(nèi)容 :從數(shù)據(jù)源表取得符合條件的的數(shù)據(jù)插入到目標(biāo)數(shù)據(jù)表: --
-- 引數(shù) :n_tas_id 任務(wù)ID, --
-- v_task_namek 任務(wù)名稱, --
-- v_bdw_name 對(duì)數(shù)據(jù)源表限制條件:本地網(wǎng)名稱 --
-----------------------------------------------
IS
--插入行數(shù)控制
i_count number(5);
--取數(shù)據(jù)游標(biāo):DATA_CUR(IN_NAME)
--參數(shù):本地網(wǎng)名稱:IN_NAME
CURSOR DATA_CUR(IN_NAME VARchar2) IS /**注意:參數(shù)的定義中不帶精度**/
select *
FROM GET_DATA_SRC A
where A.NAME = IN_NAME;
BEGIN
--計(jì)數(shù)器,控制插入行數(shù)
i_count := 0;
--循環(huán)插入數(shù)據(jù)
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
);
?。?)對(duì)于表A和表B兩個(gè)表結(jié)構(gòu)完全相同的話〔字段個(gè)數(shù),相應(yīng)字段的類型等等〕,可以使用
insert INTO B select * FROM A;
insert INTO B(field1,field2,field3) select A.field1,A.field2,A.field3 from A;
?。?) 對(duì)于兩個(gè)表如果字段數(shù)不一樣,但是有幾個(gè)字段的結(jié)構(gòu)一樣時(shí)〔類似于父子關(guān)系〕,必須使用 insert INTO B(field1,field2) select A.field1,A.field2 from A;
1.用帶參數(shù)的游標(biāo)實(shí)現(xiàn)insert功能:
create OR REPLACE PROCEDURE GET_DATA(
-- 參數(shù)列表:
n_task_id IN number, --任務(wù)編號(hào)
v_task_name IN varchar2, --任務(wù)名稱
v_name IN varchar2 -- 名稱
)
-----------------------------------------------
-- PROCEDURE名 :GET_DATA --
-- 処理內(nèi)容 :從數(shù)據(jù)源表取得符合條件的的數(shù)據(jù)插入到目標(biāo)數(shù)據(jù)表: --
-- 引數(shù) :n_tas_id 任務(wù)ID, --
-- v_task_namek 任務(wù)名稱, --
-- v_bdw_name 對(duì)數(shù)據(jù)源表限制條件:本地網(wǎng)名稱 --
-----------------------------------------------
IS
--插入行數(shù)控制
i_count number(5);
--取數(shù)據(jù)游標(biāo):DATA_CUR(IN_NAME)
--參數(shù):本地網(wǎng)名稱:IN_NAME
CURSOR DATA_CUR(IN_NAME VARchar2) IS /**注意:參數(shù)的定義中不帶精度**/
select *
FROM GET_DATA_SRC A
where A.NAME = IN_NAME;
BEGIN
--計(jì)數(shù)器,控制插入行數(shù)
i_count := 0;
--循環(huán)插入數(shù)據(jù)
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
);
相關(guān)文章
oracle應(yīng)用程序?qū)崿F(xiàn)打包 的方法
oracle應(yīng)用程序?qū)崿F(xiàn)打包 的方法...2007-04-04Oracle row_number() over()解析函數(shù)高效實(shí)現(xiàn)分頁(yè)
Oracle row_number() over()解析函數(shù)高效實(shí)現(xiàn)分頁(yè),需要的朋友可以參考下。2011-11-11Oracle存儲(chǔ)過(guò)程之?dāng)?shù)據(jù)庫(kù)中獲取數(shù)據(jù)實(shí)例
介紹Oracle數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)的存儲(chǔ)過(guò)程示例 ,在表A取得的數(shù)據(jù)插入另一個(gè)表B中2008-09-09Oracle下時(shí)間轉(zhuǎn)換在幾種語(yǔ)言中的實(shí)現(xiàn)
Oracle下時(shí)間轉(zhuǎn)換在幾種語(yǔ)言中的實(shí)現(xiàn)...2007-04-04ORACLE LATERAL-SQL-INJECTION 個(gè)人見(jiàn)解
最近忙啊忙啊的,今天終于有點(diǎn)點(diǎn)時(shí)間抽出來(lái)看看技術(shù)文章了,最近國(guó)外又出了關(guān)于新型ORA注入技術(shù)的PAPER,趕緊測(cè)試,主要是出現(xiàn)在SQL語(yǔ)句字符拼 接的時(shí)候,DATE類型轉(zhuǎn)換為VARCHAR 以及 NUMBER轉(zhuǎn)換為VARCHAR加入的格式字符出現(xiàn)問(wèn)題。2008-05-05