实验三数据库编程_第1页
实验三数据库编程_第2页
实验三数据库编程_第3页
实验三数据库编程_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库原理实验报告(三)成绩实验名称数据库编程姓名学号班级实验目的(1) 了解存储过程、函数和触发器的作用;(2) 熟悉使用命令创建存储过程的方法;(3) 熟悉使用命令创建函数的方法;(4) 熟悉使用命令创建触发器的方法。实验内容(1) 创建一个函数,以工程号为参数,返回该工程所在的城市,如果没有该工程,返回“无此工程”。create function ret_city(jno char(2)returns char(20)asbegin declare city char(20); if not exists (select * from j where jno= jno) set city

2、=无此工程; else select city=city from j where jno= jno; return city;end(2) 创建一个函数,以供应商号为参数,返回该供应商供应零件的总数量。如果不存在该供应商,则返回-100。create function ret_sl(sno char(2)returns intasbegin declare total_qty int; if not exists (select * from s where sno= sno) set total_qty=-100; else select total_qty =sum(qty) from

3、spj where sno= sno; return total_qty;end(3) 创建一个存储过程,以供应商号、工程号、零件号、供应量为参数,在SPJ表中插入一条记录,如果该记录已存在,显示“记录已存在!”,否则显示“插入成功!”。Create PROCEDURE insert_1 sno char(2),pno char(2),jno char(2),qty intAS begin if exists (select * from spj where sno= sno and pno= pno and jno= jno and qty=qty) Print 记录已存在!; else b

4、egin insert into spj values(sno,pno,jno,qty); print 插入成功! end end(4) 创建一个存储过程,以供应商号、工程号、零件号、供应量(新)为参数,修改SPJ表中某供应商给某工程供应某零件的供应量为新供应量,如果不存在该记录,则显示“无此记录!”,否则显示“修改成功!”。Create PROCEDURE update_1 sno char(2),pno char(2),jno char(2),qty intAS begin if not exists (select * from spj where sno= sno and pno= p

5、no and jno= jno) Print 无此记录!; else begin update spj set qty=qty where sno= sno and pno= pno and jno= jno; print 修改成功! end end(5) 创建一个存储过程,以工程号为参数,删除J表及SPJ表中相应的记录,如果不存在该工程,显示“无此工程!”;如果该工程没有零件供应记录,显示“该工程没有供应记录,J表中记录已删除!”;如果该工程有零件供应记录,显示“已删除J表及SPJ表中的记录!”。Create PROCEDURE delete_1 jno char(2)AS begin if

6、 not exists (select * from j where jno= jno) Print 无此工程!; else if not exists (select * from spj where jno= jno) begin delete from j where jno= jno; print 该工程没有供应记录,J表中记录已删除! end else begin delete from spj where jno= jno; delete from j where jno= jno; print 已删除J表及SPJ表中的记录! end end(6) 创建入库表出库表上的六个触发器。

7、入库修改:create trigger updat_rk on tab_rkfor updateasbegin declare old_spbh int declare old_rksl int declare new_spbh int declare new_rksl int select old_spbh=spbh from deleted select old_rksl=rksl from deleted select new_spbh=spbh from inserted select new_rksl=rksl from inserted if old_spbh=new_spbh and old_rksl!=new_rksl begin update tab_kc set kcl=kcl - old_rksl + new_rksl where spbh=new_spbh; return; end if old_spbh!=new_spbh begin update tab_kc set kcl=kcl - old_rksl where spbh=old_spbh; if exists(select * from tab_kc where spbh=ne

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论