Oracle实验五SQL语句应用,Oracle实验五 PL/SQL编程

本文介绍了如何在Oracle中编写PL/SQL块,包括定义记录类型stu_record_type,创建打印学生信息的过程PrintStuRecord,并演示了如何调用该过程输出学生信息。此外,还展示了如何创建DML触发器UpdateMajorStats,该触发器在bookinfo表发生插入、删除或更新时,自动统计表中的书本数量和作者数量,结果存储在major_stats表中。同时,给出了插入、删除和更新bookinfo表的示例操作,以及查看major_stats表中数据变化的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle实验五 PL/SQL编程

Oracle实验五 PL/SQL编程

Oracle实验五 PL/SQL编程

熟悉PL/SQL的数据类型和书写规则

熟悉控制结构和游标的使用

编写和运行函数、过程和触发器

编写脚本文件,调试运行脚本文件,并记录结果。

一、在SQL*Plus中编写一个PL/SQL块,功能用于打印学生信息。

在DECLARE部分完成:

建立学生信息记录类型stu_record_type,包括学号,姓名,性别,籍贯,学习成绩和活动成绩。均为可变长字符类型

编写本地子过程:学生信息打印过程PrintStuRecord,把(1)中定义的记录类型作为参数

定义学生信息记录变量stu_record

在BEgin……End部分完成

为stu_record变量的各个元素赋值如下:

学号:‘2001001’

姓名:’李新’

性别:‘m’

籍贯:‘黑龙江省哈尔滨市’

学习成绩:‘Excellent’

活动成绩:‘Good’

对该变量的调用打印过程,输出到屏幕

SET SERVEROUTPUT ON;

DECLARE TYPE stu_record_type is record

(

s_no VARCHAR(10),

s_name VARCHAR(10),

s_sex VARCHAR(10),

s_origin VARCHAR(20),

s_grades VARCHAR(10),

s_activities VARCHAR(10)

);

stu_record stu_record_type;

Procedure PrintStuRecord

as

begin

dbms_output.put_line('学号:' || stu_record.s_no);

dbms_output.put_line('姓名:' || stu_record.s_name);

dbms_output.put_line('性别:' || stu_record.s_sex);

dbms_output.put_line('籍贯:' || stu_record.s_origin);

dbms_output.put_line('学习成绩:' || stu_record.s_grades);

dbms_output.put_line('活动成绩:' || stu_record.s_activities);

end PrintStuRecord;

begin

stu_record.s_no := '2001001';

stu_record.s_name := '李新';

stu_record.s_sex := 'm';

stu_record.s_origin := '黑龙江省哈尔滨市';

stu_record.s_grades := 'Excellent';

stu_record.s_activities := 'Good';

PrintStuRecord;

end;

3e4ef021809dd0d8f2660580629ecb22.png

二、建立对bookinfo表的DML触发器,一旦bookinfo表发生了任何变化,立即触发,对bookinfo表的数据进行统计,结果存储在数据统计表中

如果没有则建立bookinfo表,选择建立在scott用户下

首先需要解锁scott用户

9f1366a26b612f0dbc76c4019b79ae7b.png

然后修改默认密码

76428f2af9c86a508a8bc9295a81c7b2.png

登录到用户scott

6d1d3dc95aa1d483a6969e0d111e5b72.png

表结构为

bookno varchar2(36) Primary key,

bookname varchar2(40) not null,

authorname varchar2(10) not null,

publishtime date,

bookprice float

使用如下代码

create table bookinfo

(

bookno varchar2 (36) Primary key,

bookname varchar2 (40) not null,

authorname varchar2 (10) not null,

publishtime date,

bookprice float

);

运行如下

e021c98f87e0b0eade65d0703342402d.png

建立数据统计表major_stats,包含两个字段:书的总数和作者的总数

使用如下的代码 create table major_stats

(

booknumber int,

author int

);

运行结果如下

1e8aca30dec7badd7bf3661dabbb6d56.png

创建触发器UpdateMajorStats,完成在bookinfo表中插入、删除和修改记录之后,对bookinfo表进行统计,结果存储在(2)建立的major_stats表中

使用如下代码 create or replace TRIGGER UpdateMajorStats

after insert or delete or update

on bookinfo

begin

delete from major_stats;

insert into major_stats(booknumber, author)

select count(bookno), count(distinct author)

from bookinfo;

end;

8ccff9553ca44255d313bac7480f72f1.png

在bookinfo表中插入、删除和更新信息,再查看major_stats表中数据的变化

插入信息(注意日期需要进行格式化) insert into bookinfo(bookno, bookname, authorname, publishtime, bookprice)

values ('001', 'python', 'zm', to_date('11-01-2021', 'dd-mm-yyyy'), '21') insert into bookinfo(bookno, bookname, authorname, publishtime, bookprice)

values ('002', 'rust', 'lf', to_date('11-11-2022', 'dd-mm-yyyy'), '34')

1d500d9ce93e18364fcb5fe96ec4cacc.png

删除信息

delete from bookinfo where bookno='001';

9b19b39784e9f1c7877e63d6fa682299.png

更新信息

update bookinfo set authorname = 'latex' where bookno = '002';

te from bookinfo where bookno=‘001’;

[外链图片转存中...(img-VY9gks4g-1604056146232)]

更新信息

```sql

update bookinfo set authorname = 'latex' where bookno = '002';

90ed15957fe5c8eb60e8e7b0638d0001.png

Oracle实验五 PL/SQL编程相关教程

安卓SQLite和SQLiteDataBase的应用

安卓SQLite和SQLiteDataBase的应用 实验步骤: 1、 先将数据写入两个news对象中,方便一会插入数据库,这里定义了一个SetNews类,里面静态方法是插入两条数据到news对象中并返回插入之后的对象 2、重写SQLiteOpenHelper类,以使第一次加载时能创建数据库及表

MYSQL数据库 索引的详细解读 值得一看

MYSQL数据库 索引的详细解读 值得一看 目录 一、索引的概念 1、索引的作用 二、索引的分类 1、普通索引创建的三种方式与删除 2、创建唯一索引与创建的三种方式 3、主键索引与创建的两种方式 4、组合索引 5、全文索引 6、创建索引的原则依据 三、事务的概念 1

MySQL是如何实现事务ACID四个特性的?

MySQL是如何实现事务ACID四个特性的? 事务的实现 要了解事务是如何实现的,必须要先了解下面几个概念: redolog undolog purge group commit 下面将分别介绍。 重做日志用来实现事务的原子性和持久性,主要需要关注下面几个概念点: 日志由两部分组成,一部

Linux实验五:Linux环境下的C语言编程

Linux实验五:Linux环境下的C语言编程 文章目录 一、实验目的: 二、实验要求 三、实验内容 1、编写一段C语言程序使其完成:父进程创建两个子进程,每个进程都在屏幕上显示自己的进程ID号。 2、上机调试下面的程序,观察运行结果,分析原因。 3、利用两个管道

Oracle实验四 SQL语言

Oracle实验四 SQL语言 实验四 SQL语言 掌握在Oracle中添加示例方案的方法 熟练掌握SQL语言的查询功能 掌握SQL Plus常用命令 一、 需要访问HR示例方案中的表,如果机器上没有该示例方案,则运行相关包和相应配置装入HR方案。如果已有HR方案,则跳过该步骤。 将

zzuli第四次javaweb实验

zzuli第四次javaweb实验 页面较为粗糙,毕竟刚学两个月,也没有进行封装。时间有限。此代码仅供交流学习,严禁抄袭!!!代码可能存在一些bug,dl可以通过评论联系我。 MysqlManger.java package link;import java.sql.Connection;import java.sql.DriverMana

SparkSQL存储数据到Parquet:AnalysisException: Parquet data s

SparkSQL存储数据到Parquet:AnalysisException: Parquet data source does not support null data type. 使用SparkSQL(2.4版本)往存储格式为parquet的Hive分区表中存储NullType类型的数据时报错: org.apache.spark.sql.AnalysisException: Parquet data s

64位加法——计算机组成原理实验1

64位加法——计算机组成原理实验1 实验原理图 实验步骤 因为一次最多输入32位数,而要实现64位的加法器,我们采用32位加法器拼接的方式 在输入的时候需要把两个64位数分成高32位和低32位分别输入。 在运算的过程中,先对两个64位数的低32位进行运算,生成低32

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值