oracle insert兩個關聯表

2021-06-23 02:09:18 字數 2709 閱讀 5846

現有一張老師學生表(tb_tea_cou),由於業務需要,需把老師學生表tb_tea_stu拆分成兩張表(tb_tea、tb_cou),並把記錄insert到這兩張子表中(tb_tea、tb_cou為關聯的兩張表)。

表結構如下:

tb_tea_cou(

id, //pk

name, //任課老師

zc, //職稱

course //課程

),老師表:

tb_tea(

tid, //pk

tname, //任課老師

zc //職稱

),課程表:

tb_cou(

cid, //pk

course, //課程

tea_id //fk,tb_tea id

)插入資料

insert

into tb_tea_cou (id, name, zc, course) values (hibernate_seq.nextval, '

張三', '

教師', '語文'

);insert

into tb_tea_cou (id, name, zc, course) values (hibernate_seq.nextval, '

李四', '

教師', '數學'

);insert

into tb_tea_cou (id, name, zc, course) values (hibernate_seq.nextval, '

王五', '

教師', '英語'

);insert

into tb_tea_cou (id, name, zc, course) values (hibernate_seq.nextval, '

老劉', '

教師', '歷史'

);insert

into tb_tea_cou (id, name, zc, course) values (hibernate_seq.nextval, '

小王', '

教師', '政治'

);insert

into tb_tea_cou (id, name, zc, course) values (hibernate_seq.nextval, '

杜甫', '

教師', '生物'

);insert

into tb_tea_cou (id, name, zc, course) values (hibernate_seq.nextval, '

李白', '

教師', '化學'

);insert

into tb_tea_cou (id, name, zc, course) values (hibernate_seq.nextval, '

韓愈', '

教師', '物理'

);select

*from tb_tea_cou;

思路,使用儲存過程,插入tb_tea表之後,select max(tid) from tb_tea; 得到剛剛插入的序列的最大值,在後面將這個值插入tb_cou表中。

--

建立儲存過程

set serveroutput on

;create

orreplace

procedure proce_insert_tab(error_msg out varchar2) is

v_id

number(9, 2

);begin

for cur in (select

*from

tb_tea_cou) loop

select hibernate_seq.nextval into v_id from

dual;

insert

into tb_tea(tid, tname, zc) values

(              v_id, cur.name, cur.zc);

insert

into tb_cou(cid, course, tea_id) values

(              hibernate_seq.nextval, cur.course, v_id);

commit

;       error_msg:='

新增成功';

endloop;

exception

when others then

rollback

;    error_msg:='

新增失敗';

-20010, '

error:插入資料有誤!');

end;/--

呼叫儲存過程

var error_msg varchar2(200

);exec

proce_insert_tab(:error_msg);     

select

*from

tb_tea;

select

*from

tb_cou;

select t.tid, t.tname, t.zc, c.course from tb_tea t, tb_cou c where t.tid=

c.tea_id

delete

from

tb_tea;

delete

from tb_cou;

oracle insert兩個關聯表

現有一張老師學生表 tb tea cou 由於業務需要,需把老師學生表tb tea stu拆分成兩張表 tb tea tb cou 並把記錄insert到這兩張子表中 tb tea tb cou為關聯的兩張表 表結構如下 tb tea cou id,pk name,任課老師 zc,職稱 course...

繫結 約束 (binding)指兩個東西之間的關聯

繫結 約束 binding 指兩個東西之間的關聯。如 名字 與它所代表的事物。又如屬性與實體之間的關聯,又或者符號與操作之間的關聯。早期的書翻譯成約束,後期的多數稱繫結。後續都稱繫結。繫結發生的時間稱為繫結時間 binding time 繫結 和 繫結時間 是程式語言中了個非常重要的概念。綁程式設計...

兩個明星 兩名水貨 兩個英超解說

兩個明星 兩名水貨 兩個英超解說 來自 撓頭蛇的blog 2006 03 30 08 54 42 大中小1 在這場算不上非常精彩的冠軍盃八強戰中,非常精彩的是兩名阿根廷人的表現。乙個是黃色的里克爾梅,他的護球簡直令人絕望 另乙個是藍黑的薩內蒂,他的狂飆突進幾乎讓人忘記了現代足球的陣型這個概念。看了里...