目标:
·熟悉Oracle存储过程的各种写法
先写下面几个存储过程(无,有,返回普通值,返回结果集)
在Oracle中编写:
1、创建班级表和学生表。
2、添加学生(学号,姓名,班级编号),不返回任何值。
3、添加学生(姓名,班级编号),由程序生成学号并返回(。
4、添加学生(姓名,班级编号),并返回该班的所有学生。
解答:
1、创建 班级表过程 classinfo_create
CREATE OR REPLACE PROCEDURE classinfo_create
Authid Current_User
IS
v_classinfo_sql varchar2(1000);
v_flag integer;
BEGIN
v_classinfo_sql:='create table classinfo(
classinfo_id varchar2(20) primary key,
classinfo_name varchar2(20) not null
) ';
EXECUTE IMMEDIATE v_classinfo_sql;
EXCEPTION
WHEN OTHERS THEN
EXECUTE IMMEDIATE 'drop table classinfo';
EXECUTE IMMEDIATE v_classinfo_sql;
END classinfo_create;
创建 学生表过程 student_class_create
CREATE OR REPLACE PROCEDURE student_class_create
Authid Current_User
IS
v_student_sql varchar2(1000);
v_classinfo_sql varchar2(1000);
v_flag integer;
BEGIN
v_flag:=1;
v_student_sql:='create table student(
student_id varchar2(20) primary key,
student_name varchar2(20) not null,
classinfo_id varchar2(20) not null
)' ;
v_classinfo_sql:='create table classinfo(
classinfo_id varchar2(20) primary key,
classinfo_name varchar2(20) not null
) ';
EXECUTE IMMEDIATE v_student_sql;
v_flag:=2;
EXECUTE IMMEDIATE v_classinfo_sql;
EXCEPTION
WHEN OTHERS THEN
if v_flag=1 then
EXECUTE IMMEDIATE 'drop table student';
EXECUTE IMMEDIATE v_student_sql;
classinfo_create;
end if;
if v_flag=2 then
EXECUTE IMMEDIATE 'drop table classinfo';
EXECUTE IMMEDIATE v_classinfo_sql;
end if;
END student_class_create;
2、添加学生(学号,姓名,班级编号),不返回任何值 insert_student
CREATE OR REPLACE PROCEDURE insert_student(sid in varchar2,
sname in varchar2,
sclass in varchar2)
IS
BEGIN
insert into student(student_id,student_name,classinfo_id)-- values (sid,sname,sclass);
select sid as student_id,sname as student_name,sclass as classinfo_id from dual;
commit;
exception
when others then dbms_output.put_line(sqlcode||sqlerrm);
END insert_student;
测试方法:
exec insert_student('1','zhangsan','1');
3、添加学生(姓名,班级编号),由程序生成学号并返回 insert_student2
CREATE OR REPLACE PROCEDURE insert_student2(sid out varchar2,
sname in varchar2,
sclass in varchar2)
IS
BEGIN
select max(student_id) into sid from student;
sid:=nvl(sid,0)+1;
insert into student(student_id,student_name,classinfo_id)-- values (sid,sname,sclass);
select sid as student_id,sname as student_name,sclass as classinfo_id from dual;
commit;
exception
when others then dbms_output.put_line(sqlcode||sqlerrm);
END insert_student2;
测试方法:
declare
v_out varchar2(100);
begin
insert_student2(v_out,'221','1');
dbms_output.put_line(v_out);
end;
4、添加学生(姓名,班级编号),并返回该班的所有学生 insert_student3
CREATE OR REPLACE PROCEDURE insert_student3(sysrefcursor out sys_refcursor,sname in varchar2,sclass in varchar2) IS
refcursor sys_refcursor;
sid varchar2(20);
BEGIN
select max(student_id) into sid from student;
sid:=nvl(sid,0)+1;
insert into student(student_id,student_name,classinfo_id)
select sid as student_id,sname as student_name,sclass as classinfo_id from dual;
commit;
open refcursor for select * from student where classinfo_id=sclass order by student_id;
sysrefcursor := refcursor;
exception when others then dbms_output.put_line(sqlcode||sqlerrm);
END insert_student3;
测试方法:
declare
v_out sys_refcursor;
sid varchar2(20);
sname varchar2(20);
sclass varchar2(20);
begin
insert_student3(v_out,'222','2');
loop
fetch v_out into sid,sname,sclass; --fetch ..into ..exit when遍历游标的方式之一
exit when v_out%notfound;
dbms_output.put_line(sid||','||sname||','||sclass);
end loop;
close v_out;
end;
分享到:
相关推荐
标题“2011Oracle笔记(李兴华视屏教程笔记)”揭示了文档的用途,它是作为2011年李兴华Oracle教学视频课程的学习笔记。这种笔记通常包括了课程中的重点概念、Oracle数据库基础知识、实际操作案例以及配合视频教程的...
Oracle的学习笔记中还提到了数据库的卸载过程。卸载Oracle数据库时,首先需要停止所有Oracle服务,然后按照正常的软件卸载流程进行。在某些情况下,如果遇到卸载错误,可能需要借助Oracle提供的特定工具来完成卸载。...
数据库SQL Oracle笔记全面解析 在IT领域,数据库是存储、管理与检索数据的核心工具,而Oracle作为世界...这个笔记和练习集正是为了帮助你系统地掌握这些知识,祝你在学习过程中不断进步,成为Oracle数据库领域的专家。
通过学习,读者可以掌握如何创建存储过程、函数、触发器,以及如何处理异常,理解PL/SQL的块结构和变量声明,这对数据库开发和管理至关重要。 接下来,《PLSQL基础教程-必看.pdf》提供了更基础的PL/SQL知识,包括...
PL/SQL是Oracle特有的过程式语言,结合了SQL的功能,用于编写存储过程、函数、触发器等数据库对象。在PL/SQL编程部分,你会学到如何声明变量、控制流程(IF-THEN-ELSE、CASE语句、循环结构)、异常处理以及调用...
Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它提供了高效、稳定...通过阅读和分析这些笔记,不仅可以获得丰富的理论知识,还能通过实例练习提高实际操作能力,从而在Oracle的学习之路上更进一步。
Oracle数据库系统是世界上最...这本"Oracle实用笔记 命令 文档 PDF"可能会详细讲解这些主题,并提供实际示例和练习,帮助读者深入理解和掌握Oracle数据库的操作。无论你是初学者还是经验丰富的DBA,都能从中受益匪浅。
描述中提到的内容包含了游标、存储过程、触发器以及集合等PL/SQL的重要概念,并指出学习笔记中包含练习题,这有助于初学者加深理解并掌握PL/SQL编程。 从提供的部分内容来看,知识点包括以下几个方面: 1. SET ...
本笔记主要涵盖了在达内教育机构学习Oracle数据库的一些基础知识点,包括SQLPLUS的使用、SQL语句的结构与操作,以及一些实用的数据库管理技巧。 1. SQLPLUS的命令 SQLPLUS是Oracle提供的一种命令行接口,用于与...
为了帮助人们获得这一认证,Oracle提供了原厂培训,这份540页的培训笔记大全涵盖了培训的核心内容。 ### Oracle数据库体系结构及组件 Oracle数据库体系结构主要包括以下几个主要组件: 1. **Instance实例**:是...
笔记可能包括实例演示、问题解答和实战练习,帮助学习者巩固理论知识并提升实践能力。 在学习Oracle的过程中,理解数据库的概念、关系模型、索引、事务处理、备份与恢复策略至关重要。同时,熟悉Oracle的管理工具,...
1. **Oracle基础知识**:首先,笔记会介绍Oracle数据库的基本概念,包括数据库结构、数据模型、SQL语言基础以及Oracle数据库的安装与配置过程。这部分内容对于初学者理解Oracle的工作原理至关重要。 2. **SQL查询...
通过这份“Oracle数据库练习题及笔记”,你将有机会实践上述知识点,不断巩固理论知识,并提升实际操作技能。记得在解决每个问题后,不仅要理解答案,还要理解为何这样解答,这样你的Oracle数据库知识将更加扎实。
Oracle数据库是企业级关系型数据库管理系统,广泛应用于各种规模的企业中。李兴本的Oracle数据库视频笔记涵盖了数据库的基础知识和操作技巧,以下是其中的核心要点...视频笔记中的实例和练习有助于更好地掌握这些技能。
4. **存储管理**:包括ASM(Automatic Storage Management)的使用,它是Oracle集成的存储管理解决方案,用于管理数据库的数据文件和控制文件。考生应知道如何创建和管理ASM磁盘组,以及如何在ASM中创建数据库。 5....
5. **PL/SQL**:PL/SQL是Oracle的扩展SQL语言,用于编写存储过程、函数、触发器等数据库程序。掌握PL/SQL能让你更好地实现数据库的业务逻辑和复杂操作。 6. **SQL*Plus工具**:SQL*Plus是Oracle提供的命令行接口,...
这份"Oracle培训18天老师笔记"旨在帮助初学者快速理解并掌握Oracle的基础知识,通过大量的练习,使得学习者能够熟练运用Oracle的基本语法和命令。 1. **Oracle数据库基础** - 数据库概念:了解什么是数据库,以及...
记住:欲速则不达,做任何事情要遵循他的规律,循序渐进,信心很重要 成为一个oracle高手过程:理解小知识点->做小练习->把小的只是点连成线->做oracle项目->形成只是面->深刻理解 Oracle基础部分:oracle基础使用; ...
Oracle学习笔记是一个专门为初学者设计的教程集合,涵盖了Oracle数据库的基础到高级概念。这个资源包含官方的学习材料,确保了信息的准确性和权威性。Oracle数据库是全球广泛使用的数据库管理系统之一,尤其在企业级...
1. 数据库安装与配置:学习笔记首先会介绍如何在不同操作系统环境下安装Oracle 10g,包括选择合适的安装类型(如企业版、标准版)、配置Oracle Universal Installer (OUI)、创建数据库实例等步骤。 2. 数据库架构:...