ORACLE——存储过程

Posted 九零大叔芭蕉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE——存储过程相关的知识,希望对你有一定的参考价值。

  存储过程procedure

  被内容来自《oracle从入门到精通——明日科技》一书

  存储过程是一种命名的PL/SQL程序快,存储过程被保存在数据库中,它不可以被SQL语句直接执行或调用,只能通过EXECUT命令执行或在PL/SQL程序快中内部调用。由于存储过程是已经编译好的代码,所以在被调用或引用时,其执行效率非常高。

1.创建存储过程

  1.1.创建存储过程的语法

    使用关键字create、procedure,关键字后面时过程名字和参数列表,其基本语法如下: 

create [or replace] procedure pro_name [(parameter1 [,parameter2]...)] is|as
begin
    plsql_sentences;
[exception]
    [dowith_sentences;]
end [pro_name];

 

    1.1.1.pro_name:存储过程的名字。如果数据库存在该名字,可以加上or replace ,这样新的存储过程就会覆盖掉原来已经存在的存储过程。

    1.1.2.parameter1:存储过程的参数。如果输入参数则需要在后面使用in关键字,如果输出参参数则在后面使用out关键字。in和out关键字后面时参数的类型,不能指定参数类型的长度。

    1.1.3.plsql_sentences:PL/SQL语句。它是存储过程实现的主体。

    1.1.4.dowith_sentences:异常处理语句。也是PL/SQL语句,可以没有。

    1.1.5.在创建存储过程中IS关键字也可以用AS代替,效果是一样的。

  1.2.下面通过一个实际例子来解释如何创建一个存储过程。

    假如有一个表:

create teble user(
    name varchar2(20) not null,
    address varchar2(100) not null     
)tablespace low_data;

 

    下面创建一个存储过程,向表user插入数据:

create procedure add_data_to_user is
begin
    insert into user (name,address) values (tony,shanghai);--插入数据的sql语句,存储过程的实体
    commit;--提交事务
    dbms_output_line(新插入数据成功!);--插入数据成功返回的信息提示,可以没有
end add_data_to_user;

 

    上面的存储过程为:向表user插入一条记录,存储过程的名字是add_data_to_user。如果在当前模式下数据库已经存在名为add_data_to_user的存储过程,则使用or replace关键字创建,如下:

create or replace procedure add_data_to_user is
begin
    insert into user (name,address) values (simth,beijing);--插入数据的sql语句,存储过程的实体
    commit;--提交事务
    dbms_output_line(新插入数据成功!);--插入数据成功返回的信息提示,可以没有
end add_data_to_user;

 

    这样就会覆盖之前创建的同名的存储过程。如果不存在则为直接创建名为add_data_to_user的存储过程。

    如果创建的过程中出现的错误,用户可以使用‘show error‘命令查看错误信息。

    上面的存储过程主体inert语句仅仅是被编译了,并没有执行,下面说一下如何执行。

  1.3.执行存储过程

    在SQL*Plus环境下,执行存储过程使用关键字execute命令执行存储过程的名字即可,语句如下:

execute add_data_to_user;

 

    在PL/SQL中执行存储过程语句为:

begin
    add_data_to_user;
end;

 

  2.存储过程的关键字

    2.1

 

以上是关于ORACLE——存储过程的主要内容,如果未能解决你的问题,请参考以下文章

oracle中的存储过程,有啥作用,以及怎么在代码中使用?

oracle创建存储过程时,提示错误是:错误(5,18): PL/SQL: ORA-00947: 没有足够的值?代码如下:

oracle form怎么调用oracle存储过程

oracle数据库可否批量导出存储过程

oracle创建存储过程时,提示错误是:错误(5,18): PL/SQL: ORA-00947: 没有足够的值?代码如下:

oracle的存储过程