天蝎做网站建网站,朗读者外国人做的汉字网站,怎么弄一个微信小程序,网站定制的销售情况前言 嗨#xff0c;各位数据库达人#xff01;准备好迎接数据库编程的新挑战了吗#xff1f;今天我们要探索的是Oracle数据库中的神秘魔法——PL/SQL编程#xff01;#x1f52e;#x1f4bb; 在这篇博文【Oracle】玩转Oracle数据库#xff08;五#xff09;#xff1… 前言 嗨各位数据库达人准备好迎接数据库编程的新挑战了吗今天我们要探索的是Oracle数据库中的神秘魔法——PL/SQL编程 在这篇博文【Oracle】玩转Oracle数据库五PL/SQL编程中我们将进入编程的奇妙世界掌握PL/SQL这门神秘的魔法让数据库发挥出更强大的力量 无论你是想成为数据库开发大师还是想提升数据库应用的功能相信我本文都会是你的灵感摇篮我们要学会编写存储过程、触发器、函数等PL/SQL程序掌握异常处理和事务控制的技巧让我们的数据库编程之路更加畅快准备好将数据库变成你的魔法王国了吗跟着我一起探索PL/SQL的奥秘让我们的数据库应用更上一层楼 目录
前言
☀️一、研究目的
二、研究内容
三、研究结论
1. 在SQL*Plus中编写一个PL/SQL块功能用于打印学生信息。要求写成一个完成的程序下面是分别提出程序内要实现的具体要求。
2. 建立对bookinfo表的DML触发器一旦bookinfo表发生了任何变化立即触发对bookinfo表的数据进行统计结果存储在数据统计表中
☀️(1)如果没有则建立bookinfo表选择建立在scott用户下表结构为
☀️(2) 建立数据统计表major_stats包含两个字段书的总数和作者的总数
☀️(3) 创建触发器UpdateMajorStats完成在bookinfo表中插入、删除和修改记录之后对bookinfo表进行统计结果存储在(2)建立的major_stats表中
☀️(4) 在bookinfo表中插入、删除和更新信息再查看major_stats表中数据的变化
四、研究心得 ☀️一、研究目的
1.熟悉PL/SQL的数据类型和书写规则
2.熟悉控制结构和游标的使用
3.编写和运行函数、过程和触发器 二、研究内容
1. 在SQL*Plus中编写一个PL/SQL块功能用于打印学生信息。要求写成一个完成的程序下面是分别提出程序内要实现的具体要求。
在DECLARE部分完成 (1) 建立学生信息记录类型stu_record_type包括学号姓名性别籍贯学习成绩和活动成绩。均为可变长字符类型 (2) 定义学生信息记录变量stu_record (3) 编写本地子过程学生信息打印过程PrintStuRecord把(1)中定义的记录类型作为参数注意这个过程是带参数的。 在BEGIN…END部分完成 (1) 为stu_record变量的各个元素赋值如下 学号‘2020xxxx’ 姓名’xxx’ 性别‘男’ 籍贯‘黑龙江省哈尔滨市’ 学习成绩‘Excellent’ 活动成绩‘Good’ (2) 对该变量的调用打印过程输出到屏幕 2. 建立对bookinfo表的DML触发器一旦bookinfo表发生了任何变化立即触发对bookinfo表的数据进行统计结果存储在数据统计表中 (1) 如果没有则建立bookinfo表选择建立在scott用户下表结构为 (bookno varchar2(36) Primary key, bookname varchar2(40) not null, authorname varchar2(10) not null, publishtime date, bookprice float) (2) 建立数据统计表major_stats包含两个字段书的总数和作者的总数 (3) 创建触发器UpdateMajorStats完成在bookinfo表中插入、删除和修改记录之后对bookinfo表进行统计结果存储在(2)建立的major_stats表中 (4) 在bookinfo表中插入、删除和更新信息再查看major_stats表中数据的变化 三、研究结论
准备工作
按住winr输入sqlplus,如图1. 图1
输入用户名sys as sysdba密码Csuft123.并输入startup启动实例如图2. 图2
【实验内容开始】
1. 在SQL*Plus中编写一个PL/SQL块功能用于打印学生信息。要求写成一个完成的程序下面是分别提出程序内要实现的具体要求。
在DECLARE部分完成 (1) 建立学生信息记录类型stu_record_type包括学号姓名性别籍贯学习成绩和活动成绩。均为可变长字符类型 (2) 定义学生信息记录变量stu_record (3) 编写本地子过程学生信息打印过程PrintStuRecord把(1)中定义的记录类型作为参数注意这个过程是带参数的。 在BEGIN…END部分完成 (1) 为stu_record变量的各个元素赋值如下 学号‘2020xxxx’ 姓名’xxx’ 性别‘男’ 籍贯‘黑龙江省哈尔滨市’ 学习成绩‘Excellent’ 活动成绩‘Good’ (2) 对该变量的调用打印过程输出到屏幕 答:代码如下
SET SERVEROUTPUT ON;
DECLARE TYPE stu_record_type is record
(
stu_num VARCHAR(20),
stu_name VARCHAR(20),
stu_sex VARCHAR(20),
stu_origin VARCHAR(50),
stu_grades VARCHAR(20),
stu_actscores VARCHAR(20)
);
stu_record stu_record_type;
Procedure PrintStuRecord as
begin
dbms_output.put_line(学号 || stu_record.stu_num);
dbms_output.put_line(姓名 || stu_record.stu_name);
dbms_output.put_line(性别 || stu_record.stu_sex);
dbms_output.put_line(籍贯 || stu_record.stu_origin);
dbms_output.put_line(学习成绩 || stu_record.stu_grades);
dbms_output.put_line(活动成绩 || stu_record.stu_actscores);
end PrintStuRecord;
begin
stu_record.stu_num : 2020xxxx;
stu_record.stu_name : xxx;
stu_record.stu_sex : 男;
stu_record.stu_origin : 黑龙江省哈尔滨市;
stu_record.stu_grades : Excellent;
stu_record.stu_actscores : Good;
PrintStuRecord;
end;
在plsqldev编辑器显示如图3所示。 图3 输入‘/’后运行结果如图4所示 图4 2. 建立对bookinfo表的DML触发器一旦bookinfo表发生了任何变化立即触发对bookinfo表的数据进行统计结果存储在数据统计表中
☀️(1)如果没有则建立bookinfo表选择建立在scott用户下表结构为
(bookno varchar2(36) Primary key,
bookname varchar2(40) not null,
authorname varchar2(10) not null,
publishtime date,
bookprice float) 答连接到scott用户如图5 图5
建立bookinfo表格语句为
create table bookinfo
(
bookno varchar2 (36) Primary key,
bookname varchar2 (40) not null,
authorname varchar2 (10) not null,
publishtime date,
bookprice float
);
运行结果如图6 图6
☀️(2) 建立数据统计表major_stats包含两个字段书的总数和作者的总数
答语句如下 create table major_stats
(
book_number int,
author_number int
); 运行结果如图7 图7
☀️(3) 创建触发器UpdateMajorStats完成在bookinfo表中插入、删除和修改记录之后对bookinfo表进行统计结果存储在(2)建立的major_stats表中
答创建语句如下
create or replace TRIGGER UpdateMajorStats
after insert or delete or update
on bookinfo
begindelete from major_stats;insert into major_stats(book_number, author_number)select count(bookno), count(distinct authorname)from bookinfo;
end;
运行结果如图8 图8
☀️(4) 在bookinfo表中插入、删除和更新信息再查看major_stats表中数据的变化
答最初major_stats表无数据如图9 图9
插入如图10 图10
删除如图11 图11
更新如图12 图12 四、研究心得
嘿数据库编程小达人们这次的PL/SQL编程实验可是个火爆的技术派对我不仅熟悉了PL/SQL的各种数据类型和书写规则还编写并成功运行了函数、过程和触发器让数据库的功能焕发出新的活力
但哎呀技术之路总是充满了挑战和惊喜这次实验中遇到了那个“PLS-00103”的错误提示简直就像是在迷宫里碰壁幸好上网一查问题迎刃而解原来存储过程定义时不需要指定VARCHAR2的长度技术小问题小把戏
嗯这次的实验相对简单因为和之前学的SQL Server有点类似所以上手还算顺利不过要是有个可视化工具辅助一下编程起来肯定会更加得心应手PLSQLDEV就是个不错的选择操作起来简直流畅得像是在弹钢琴✨
总的来说这次实验让我感受到了编程的乐趣和挑战虽然有小插曲但成就感满满 继续探索我们的数据库之旅才刚刚开始