`
zjm16
  • 浏览: 71259 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
文章分类
社区版块
存档分类
最新评论

oracle 存储过程 练习笔记

阅读更多
目标:

·熟悉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笔记(李兴华视屏教程笔记)

    标题“2011Oracle笔记(李兴华视屏教程笔记)”揭示了文档的用途,它是作为2011年李兴华Oracle教学视频课程的学习笔记。这种笔记通常包括了课程中的重点概念、Oracle数据库基础知识、实际操作案例以及配合视频教程的...

    Oracle学习笔记.pdf

    Oracle的学习笔记中还提到了数据库的卸载过程。卸载Oracle数据库时,首先需要停止所有Oracle服务,然后按照正常的软件卸载流程进行。在某些情况下,如果遇到卸载错误,可能需要借助Oracle提供的特定工具来完成卸载。...

    数据库SQL oracle的笔记,比较全面的

    数据库SQL Oracle笔记全面解析 在IT领域,数据库是存储、管理与检索数据的核心工具,而Oracle作为世界...这个笔记和练习集正是为了帮助你系统地掌握这些知识,祝你在学习过程中不断进步,成为Oracle数据库领域的专家。

    oracle经典笔记

    通过学习,读者可以掌握如何创建存储过程、函数、触发器,以及如何处理异常,理解PL/SQL的块结构和变量声明,这对数据库开发和管理至关重要。 接下来,《PLSQL基础教程-必看.pdf》提供了更基础的PL/SQL知识,包括...

    oracle教程笔记

    PL/SQL是Oracle特有的过程式语言,结合了SQL的功能,用于编写存储过程、函数、触发器等数据库对象。在PL/SQL编程部分,你会学到如何声明变量、控制流程(IF-THEN-ELSE、CASE语句、循环结构)、异常处理以及调用...

    学习oracle的TXT格式笔记

    Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它提供了高效、稳定...通过阅读和分析这些笔记,不仅可以获得丰富的理论知识,还能通过实例练习提高实际操作能力,从而在Oracle的学习之路上更进一步。

    oracle实用笔记 命令 文档 pdf

    Oracle数据库系统是世界上最...这本"Oracle实用笔记 命令 文档 PDF"可能会详细讲解这些主题,并提供实际示例和练习,帮助读者深入理解和掌握Oracle数据库的操作。无论你是初学者还是经验丰富的DBA,都能从中受益匪浅。

    oracle pl的学习笔记

    描述中提到的内容包含了游标、存储过程、触发器以及集合等PL/SQL的重要概念,并指出学习笔记中包含练习题,这有助于初学者加深理解并掌握PL/SQL编程。 从提供的部分内容来看,知识点包括以下几个方面: 1. SET ...

    tarena根笔记oracle

    本笔记主要涵盖了在达内教育机构学习Oracle数据库的一些基础知识点,包括SQLPLUS的使用、SQL语句的结构与操作,以及一些实用的数据库管理技巧。 1. SQLPLUS的命令 SQLPLUS是Oracle提供的一种命令行接口,用于与...

    Oracle OCP原厂培训笔记大全 540页图文

    为了帮助人们获得这一认证,Oracle提供了原厂培训,这份540页的培训笔记大全涵盖了培训的核心内容。 ### Oracle数据库体系结构及组件 Oracle数据库体系结构主要包括以下几个主要组件: 1. **Instance实例**:是...

    老方块 ORACLE 教学笔记 整理.

    笔记可能包括实例演示、问题解答和实战练习,帮助学习者巩固理论知识并提升实践能力。 在学习Oracle的过程中,理解数据库的概念、关系模型、索引、事务处理、备份与恢复策略至关重要。同时,熟悉Oracle的管理工具,...

    oracle培训18天老师笔记

    1. **Oracle基础知识**:首先,笔记会介绍Oracle数据库的基本概念,包括数据库结构、数据模型、SQL语言基础以及Oracle数据库的安装与配置过程。这部分内容对于初学者理解Oracle的工作原理至关重要。 2. **SQL查询...

    oracle数据库练习题

    通过这份“Oracle数据库练习题及笔记”,你将有机会实践上述知识点,不断巩固理论知识,并提升实际操作技能。记得在解决每个问题后,不仅要理解答案,还要理解为何这样解答,这样你的Oracle数据库知识将更加扎实。

    mldn oracle视频笔记

    Oracle数据库是企业级关系型数据库管理系统,广泛应用于各种规模的企业中。李兴本的Oracle数据库视频笔记涵盖了数据库的基础知识和操作技巧,以下是其中的核心要点...视频笔记中的实例和练习有助于更好地掌握这些技能。

    Oracle Database OCM考试参考笔记.rar

    4. **存储管理**:包括ASM(Automatic Storage Management)的使用,它是Oracle集成的存储管理解决方案,用于管理数据库的数据文件和控制文件。考生应知道如何创建和管理ASM磁盘组,以及如何在ASM中创建数据库。 5....

    oracle初学者笔记

    5. **PL/SQL**:PL/SQL是Oracle的扩展SQL语言,用于编写存储过程、函数、触发器等数据库程序。掌握PL/SQL能让你更好地实现数据库的业务逻辑和复杂操作。 6. **SQL*Plus工具**:SQL*Plus是Oracle提供的命令行接口,...

    Oracle培训18天老师笔记

    这份"Oracle培训18天老师笔记"旨在帮助初学者快速理解并掌握Oracle的基础知识,通过大量的练习,使得学习者能够熟练运用Oracle的基本语法和命令。 1. **Oracle数据库基础** - 数据库概念:了解什么是数据库,以及...

    韩顺平oracle学习笔记

    记住:欲速则不达,做任何事情要遵循他的规律,循序渐进,信心很重要 成为一个oracle高手过程:理解小知识点->做小练习->把小的只是点连成线->做oracle项目->形成只是面->深刻理解 Oracle基础部分:oracle基础使用; ...

    oracle学习笔记

    Oracle学习笔记是一个专门为初学者设计的教程集合,涵盖了Oracle数据库的基础到高级概念。这个资源包含官方的学习材料,确保了信息的准确性和权威性。Oracle数据库是全球广泛使用的数据库管理系统之一,尤其在企业级...

    Oracle 10g OCP学习笔记

    1. 数据库安装与配置:学习笔记首先会介绍如何在不同操作系统环境下安装Oracle 10g,包括选择合适的安装类型(如企业版、标准版)、配置Oracle Universal Installer (OUI)、创建数据库实例等步骤。 2. 数据库架构:...

Global site tag (gtag.js) - Google Analytics