• Oracle——存储过程的使用


    为什么使用存储过程?

    存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。


    存储过程的定义:

    存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。 存储过程是由流控制和SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE 中,若干个有联系的过程可以组合在一起构成程序包。


    优 点:
    1. 存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 
    2.当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。 
    3.存储过程可以重复使用,可减少数据库开发人员的工作量。 
    4.安全性高,可设定只有某用户才具有对指定存储过程的使用权。


     简单示例:

    1 sql 语句创建一个用户信息表 stu

     1 CREATE TABLE stu
     2 
     3   (
     4 
     5   id VARCHAR2(4),
     6 
     7   name VARCHAR2(15),
     8 
     9   gender VARCHAR2(15), 
    10 
    11   birthday VARCHAR2(30)
    12 
    13   );

    2.sql 语句创建一个存储过程add_stu

     1 create or replace procedure add_stu
     2 (
     3        sid stu.stuid%type,
     4        sname stu.stuname%type,
     5        sgender stu.gender%type,
     6        sbirth stu.birthday%type     
     7 )
     8 as
     9 begin
    10        --插入数据
    11        insert into stu(stuid,stuname,gender,birthday) 
    12        values(sid,sname,sgender,sbirth);
    13 end;

      表有了,存储过程有了,那么什么时候调用呢,又是如何调用的呢?

    3.sql*plus 调用存储过程

     1 declare
     2 t_id stu.stuid%type := '005';
     3 t_name stu.stuname%type := '测试';
     4 t_gender stu.gender%type := '';
     5 t_birth stu.birthday%type := '';
     6 begin
     7 add_stu(t_id,t_name,t_gender,t_birth);
     8 dbms_output.put_line('用户'||t_name||'成功添加');
     9 end;
    10 /

    4.查看结果

                   过程执行成功:    

                       表中已填入数据 

     用 exec add_stu('006','测试1','男','03-1月-10');

    或者 execute add_stu('006','测试1','男','03-1月-10');

    结果和上面的一样。

    存储过程本质上就是对业务关系复杂的 sql 语句的封装。sql 语句以程序块的形式被封装在了数据库中了。写好了以后,无论是 java,还是 .net ,抑或其他开发语言,可以像使用 sql 语句那样随意调用。这就是数据库开发。

    逃避不一定躲得过,面对不一定最难过
  • 相关阅读:
    有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
    C编程实现2的1000次方(使程序中的n=1000即可)
    有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数。
    有一个字符串,内有若干字符,输入一个字符,要求程序将字符串中该字符删去。
    使用静态变量的方法求n!
    数组排序:冒泡法和选择法
    使用函数的递归调用来解决Hanoi(汉诺)塔问题。
    VC5509的通用GEL代码
    字、字节和位的关系
    安装JDK后环境变量的配置
  • 原文地址:https://www.cnblogs.com/yangzhenlong/p/3454318.html
Copyright © 2020-2023  润新知