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 //课程
),

老师表:
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 OR REPLACE PROCEDURE proce_insert_tab(error_msg OUT VARCHAR2) ISv_id NUMBER(9, 2);
BEGINFOR cur IN (select * FROM tb_tea_cou) LOOPSELECT 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:='添加成功';END LOOP;
EXCEPTION WHEN OTHERS THEN ROLLBACK;error_msg:='添加失败';RAISE_APPLICATION_ERROR(-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;

 

转载于:https://www.cnblogs.com/linjiqin/p/3152554.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

消失的字符串——c语言函数中的数据存储方式以及字符串实现

2019独角兽企业重金招聘Python工程师标准>>> 事情是这样的,最近在学习翁老师的Mooc之C语言程序设计,插一句,真的是好老师,讲的真的太好了,在c里的字符串这里,翁老师演示了一个小程序&#xff0c…

JQuery 文本框高亮显示插件

以前使用Mootools Js框架,文本框有个$(id).highlight()高亮方法,使其高亮显示,效果如下: JQuery 中没有这个方法,自己今天写了一个Plugin,把代码贴出来分享一下; 代码如下: jquery-h…

优秀工程师应该具备哪些素质_一名优秀工程师所需要具备的条件和素质[1]

一名优秀工程师所需要具备的条件和素质碰到一个不相熟的人。“上学还是工作?(我看起来还不算老嘛)”“工作了,一年多一点。”“做什么的?”“半导体行业的。”“哦,具体做什么呢?”“嗯......工程师。”工程师——这就…

链方法[C# 基础知识系列]专题三:如何用委托包装多个方法——委托链

最近研究链方法,稍微总结一下,以后继续补充: 弁言: 上一专题分析了下编译器是如何来翻译委托的,从中间语言的角度去看委托,希望可以帮助大家进一步的理解委托,然而之前的分析都是委托只是封装一…

51单片机lcd1602的简单实用

基础知识准备 lcd1602简介 图片来自b站斌哥单片机 需要关注的有以下几点: RS : 高数据低命令;RS 1时,lcd1602读写数据,RS0时,lcd1602读写命令R/W:高读低写;RW1时,单片机读取lcd160…

firedebug调试Jquery

不了解的同学先“点这里”看看什么是Firebug。简单来说,Firebug是Firefox上用来监视、编辑和调试站点的CSS、HTML、DOM和JavaScript的扩展工具。 我们先到Firebug的主页上下载最新的版本装上,下面开始调试: 1、查看、编辑HTML元素及其(转) 安…

linux下Bash编程until语句及格式化硬盘分区等编写脚本(十)

linux下Bash编程until语句及格式化硬盘分区等编写脚本(十)1.循环语句结构总结1.1.while语句当条件满足时,进入循环语句while 条件; do语句done1.2.until语句当条件不满足时,进入循环语句until 条件; do语句done1.3.for 变量 in 列表; do 循环体done1.4.f…

halcon区域腐蚀膨胀算子_Halcon算子

Halcon部分算子功能:*读取一张图像read_image(Image,C:/Users/Desktop/无标题.png)*画一个矩形生成区域draw_rectangle1(3600, Row1, Column1, Row2, Column2)*获得矩形区域gen_rectangle1(Rectangle, Row1, Column1, Row2, Column2)*区域内最大、最小、最大-最小灰…

51单片机数字钟的实现

作业 用51单片机完成一个数字钟的计时及校时功能。 1、设置8个数码管的显示缓冲区为DISPBUFF[8],并初始化为02,02,-,04,08,-,03,06. 2、定时器0每隔5ms刷新一次数码管显示缓冲区,并显示时间(中断来做) 3、定时器1负责精确定时,计时1s,每隔…

Google Map API 学习三

转载于:https://www.cnblogs.com/MyFlora/p/3154066.html

委托声明----委托实例化-----委托调用

定义和使用委托分三个步骤&#xff1a; 1、委托声明。2、委托实例化。3、委托调用。 一、定义委托定义委托的语法如下&#xff1a; <访问修饰符> delegate 返回类型 委托名(); 定义委托和定义方法很相似&#xff0c;委托没有具体的实现体&#xff0c;由关键字delegate声明…

慎用SELECT INTO复制表

很多时候我们习惯于用SELECTINTO 复制一个表或表结构&#xff0c;因为它方便&#xff0c;快捷&#xff0c;而且在某些情况下效率比INSERT INTO 效率要高一些。但是要注意&#xff1a; SELECT INTO 复制表或表结构的时候&#xff0c;只是得到了一个“外壳”&#xff0c;就像克隆…

mysql sql语句使用技巧

mysql更新数据限制limitmysql更新时&#xff0c;要更新记录中某个区间的数据&#xff0c;只能用WHERE条件来限制了&#xff0c;用LIMIT只能限制更新多少条&#xff01;测试如下&#xff1a;UPDATE products SET goods_number goods_number10 ORDER BY goods_id DESC LIMIT 5,1…

wingdows安装psutil_psutil模块安装指南(win与linux)

1、windows下psutil模块安装&#xff1a;https://pypi.python.org/packages/3.4/p/psutil/下载符合版本的软件包下载&#xff0c;然后安装即可。2、ubuntu下载psutil模块的tar包安装复制代码 代码示例:wget https://pypi.python.org/packages/source/p/psutil/psutil-2.1.3.tar…

信号的采样与插值重建(包含matlab)

实验任务 双频信号的采样和插值重建&#xff1a;对双频信号进行采样&#xff08;符合奈奎斯特低通采样定理&#xff09;&#xff0c;绘制波形和频谱&#xff1b;编制sinc函数插值函数&#xff0c;对采样进行恢复&#xff0c;绘制波形。 实验原理 matlab代码 clear all; clos…

dc概论之IO约束

版权声明&#xff1a;转载时请以超链接形式标明文章原始出处和作者信息及本声明http://bb2hh.blogbus.com/logs/39654476.html 注明&#xff1a;如需转载&#xff0c;请注明作者出处&#xff0c;谢谢&#xff5e;&#xff0c;Author&#xff1a;pythonlong以下根据资料和个人体…

对寄存器ESP和EBP的一些理解

PS&#xff1a;EBP是当前函数的存取指针。即存储或者读取数时的指针基地址&#xff1b;ESP就是当前函数的栈顶指针。每一次发生函数的调用&#xff08;主函数调用子函数&#xff09;时&#xff0c;在被调用函数初始时&#xff0c;都会把当前函数&#xff08;主函数&#xff09;…

配置FCKeditor_2.6.3+fckeditor-java-2.4

下载 http://www.fckeditor.net/download FCKeditor.Javahttp://sourceforge.net/project/showfiles.php?group_id75348&package_id129511 -1- copy fckeditor文件夹到项目的webRoot目录下 -2- 添加Jar包 slf4j-simple-1.5.0.jar slf4j-api-1.5.0.jar java-core-2.4-beta-…

普通调幅(AM)与抑制载波双边带调幅(DSB)matlab编程实现

实验任务 实现单频信号的AM、DSB调制&#xff0c;绘制调制前后的波形和频谱 实验原理 matlab代码 AM调制 clear all; ts 0.0025; %信号抽样时间间隔 fs 1/ts; %抽样频率 t 0:ts:10-ts; %时间向量 df fs/length(t); %fft的频率分辨率 msg2 cos(2*pi*2*t); Pn fft(msg2…

electron 读取文件夹内容_如何使用Electron Framework选择,读取,保存,删除或创建文件...

本文概述为了处理文件(CRUD)的生命周期, 我们将使用对话框和文件系统组件。对话框模块提供了用于显示本机系统对话框(例如打开文件或警报)的API, 因此Web应用程序可以提供与本机应用程序和Node.js文件系统相同的用户体验。加载所需的依赖项我们需要加载以下依赖项, 以执行我们要…