zoukankan      html  css  js  c++  java
  • oracle存储过程创建-调试-调用-删除(一)

    存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

    优点:效率高,复用性强,安全性高

    存储过程的结构:oracle的存储过程包含三部分:过程声明,执行过程部分,存储过程异常(可省略)。

    接下来我们来详细讲述一下存储过程

    存储过程的语法

    create:创建 关键字

    or replace: 如果此名称的存储过程已经创建了,那么用这两个关键字可以替换同名的存储过程,不用会报错,可以省略。

    procedure:存储过程  意思是创建的是一个存储过程

    pro_name: 存储过程的名称。

    (参数): 存储过程的参数,可以省略,有参的存储过程在写参数的时候要指定参数的数据类型。

    as: 也可以写成is。

    plsql_sentences: pl/sql语句,他是存储过程功能实现的主体。

    dowith_sentences: 异常处理语句,也是pl/sql语句,可以省略。

    1 create [or replace] procedure pro_name (参数) as
    2 begin
    3     plsql_sentences;
    4 [exception]
    5     [dowith_sentences;]
    6 end pro_name;

    存储过程的学习

    存储过程的创建(pl/sql)

    首先打开plsql软件,在左侧找到procedures文件夹,里面的就是你的存储过程,在上面右键--新建--输入存储过程的名字和参数(名字在里面也可以改,参数可以暂时不管)

     

    无参存储过程

    上面的介绍对于一些初学者可能不那么好理解,那么我们先用一个例子来让大家认识一下存储过程。

    首先我们在oracle中创建一个表(表名T_USER)表结构如下

    例子:写一个无参存储过程,向t_user表中添加一条数据。

    1 create or replace procedure test1 as
    2 begin
    3   insert into t_user values('1','张三',22,1,'13718770909',sysdate);
    4   commit;
    5 end test1;

    要注意:test1为存储过程的名字,commit意思是提交事务,end后面跟的一定是存储过程的名字。

    有参存储过程

    那么通过上面的例子我们就基本知道了无参存储过程的大概。那么接下来让我们看看有参存储过程是怎么写的。

    首先我们先介绍一下存储过程的参数

    存储过程可以接受多个参数,参数模式包括三种:

    in:输入类型 默认 不可修改 可以省略

    out:输出类型 只能等待被赋值  不可省略

    in out:兼顾上面两种 不可省略 不建议使用这种,如果遇到这种情况,完全可以拆开成两个参数

    例子:写一个有参的存储过程,向t_user表中添加一条数据。要求插入的数据都要用参数传递过来的数据。

    1 create or replace procedure test2(id varchar2,name varchar2,age number,sex number,tel varchar2,create_time date) is
    2 begin
    3   insert into t_user values (id,name,age,sex,tel,create_time);
    4   commit;
    5 end test2;

    要注意:test2为存储过程的名称,每个参数要表明类型,但是不能指定长度,参数的名称可以随便起。

    存储过程的检查

    一个存储过程在创建之后,需要我们验证一下语法是否正确,方法是点击下图的执行按钮(齿轮) 如果最下面出现了编译成功,那么说明此存储过程语法上没有问题。如果有报错,就根据提示信息进行修改即可。

    存储过程的调用

    写好的存储过程,在oracle中怎么调用呢?

    首先打开一个sql操作页面(文件--新建-sql窗口),根据我们所写的存储过程的参数,可以使用call关键字进行调用

    比如上面两个例子(test1,test2),他们的调用方法分别为

    1 --无参调用方法
    2 call test1()
    3 --有参调用方法
    4 call test2('11','张三',11,0,'13567667897',sysdate)

    存储过程的删除

    当一个存储过程不再被需要的时候,要将此过程从内存中删除,以释放相应的内存空间,方法一共有两种

    1. 语句删除L:drop procedure test1 //test1是存储过程的名称

    2. 使用pl/sql工具,直接在左侧的procedures文件夹中找到那个存储过程文件,右键删除即可。

    存储过程的调试

    在左侧的procedures文件夹中找到你要调试的存储过程文件,右键选择测试,之后按下图操作

     

    上面的红框中的五个按钮 从左到右分别为:运行,单步进入(重要),单步跳过,单步退出,运行到下一个异常,一般我们只用到单步进入就可以了。

    操作顺序为:点击运行按钮,之后一步步点击单步进入按钮即可。

     

    特别注意:我们在存储过程中可以写dbms_output.put_line('ok'); 括号中的ok为参数  类似于java里的System.out.println("ok"); 可以在DBMS输出中看到

    接下来会继续更新存储过程中的一些其他的知识及技巧和用法。

      

      

  • 相关阅读:
    云计算设计模式(十一)——健康端点监控模式
    大数据R语言简析
    git查看/修改 用户名和邮箱
    MySQL查询和修改auto_increment的方法
    git 配置用户名和邮箱
    discuz安装小云app
    二维码转化为链接
    discuz更换域名,登录不了解决
    数据结构很重要
    C++ vector错误(1)
  • 原文地址:https://www.cnblogs.com/flyinghome/p/12125244.html
Copyright © 2011-2022 走看看