• 技术文章 >数据库 >Oracle

    oracle存储过程的基本结构包含哪些

    青灯夜游青灯夜游2022-03-02 16:52:15原创141

    oracle存储过程的结构包含三部分:1、过程声明;2、执行过程部分;3、存储过程异常,该部分可省略,如果要增强脚本的容错性和调试的方便性那就写上异常处理。

    本教程操作环境:Windows7系统、Oracle 11g版、Dell G3电脑。

    什么是存储过程

    存储过程: 百度百科上是这样解释的,存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来调用存储过程。

    简单的说就是专门干一件事一段sql语句。

    可以由数据库自己去调用,也可以由java程序去调用。

    在oracle数据库中存储过程是procedure。

    存储过程结构

    (1)基本结构

    Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常(可写可不写,要增强脚本的容错性和调试的方便性那就写上异常处理)

    (2)无参存储过程

    /**
    name_procedure就是自己自定义的存储过程名
    */
    create or replace procedure name_procedure AS/IS
    	变量名1  数据类型;
    	变量名2  数据类型;
    BEGIN
    	--要处理的业务逻辑
    	EXCEPTION    --存储过程异常
    END name_procedure;

    (3).有参存储过程

    普通参数存储过程

    /*
    age 类型为number 初始化为20;
    */
    CREATE OR REPLACE PROCEDURE name_procedure (param1 TYPE)
    AS/IS
    name varchar(20);
    age number :=20;
    BEGIN
      --业务处理.....
    END ;

    带参数的存储过程并且进行赋值

    CREATE OR REPLACE PROCEDURE 存储过程名称(
           s_no in varchar,
           s_name out varchar,
           s_age number) AS
    total NUMBER := 0;
    BEGIN
      SELECT COUNT(1) INTO total FROM student s WHERE s.age=s_age;
      dbms_output.put_line('符合该年龄的学生有'||total||'人');
      EXCEPTION
        WHEN too_many_rows THEN 
        DBMS_OUTPUT.PUT_LINE('返回值多于1行'); 
    END

    其中参数IN表示输入参数,是参数的默认模式。

    第7行:查询语句,把参数s_age作为过滤条件,INTO关键字,把查到的结果赋给total变量。

    第8行:输出查询结果,在数据库中“||”用来连接字符串

    第9—11行:做异常处理

    存储过程语法

    (1)运算符

    1.png

    (2)SELECT INTO STATEMENT语句

    需求:查出成绩为100分的那个学生的姓名,年龄,籍贯

    CREATE OR REPLACE PROCEDURE DEMO_CDD1 IS
    s_name VARCHAR2;   --学生名称
    s_age NUMBER;      --学生年龄
    s_address VARCHAR2; --学生籍贯
    BEGIN
      --给单个变量赋值
      SELECT student_address INTO s_address
      FROM student where student_grade=100;
       --给多个变量赋值
      SELECT student_name,student_age INTO s_name,s_age
      FROM student where student_grade=100;
      --输出成绩为100分的那个学生信息
      dbms_output.put_line('姓名:'||s_name||',年龄:'||s_age||',籍贯:'||s_address);
    END

    (3)选择语句

    //if 后面一定要添加THEN 相当于Java中的 大括号
    IF s_sex=1 THEN
      dbms_output.put_line('这个学生是男生');
    ELSE IF THEN
      dbms_output.put_line('这个学生是女生');
    ELSE
      dbms_output.put_line('这个学生性别错误');
    END IF

    (4)循环语句

    a.基本循环

    LOOP
      IF 表达式 THEN
        EXIT;
      END IF
    END LOOP;

    b.while循环

    WHILE 表达式 LOOP
      dbms_output.put_line('haha');
    END LOOP;

    c.for循环

    //a 1 到 20 范围
    FOR a in 10 .. 20 LOOP
      dbms_output.put_line('value of a: ' || a);
    END LOOP;

    推荐教程:《Oracle教程

    以上就是oracle存储过程的基本结构包含哪些的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:oracle 存储过程
    上一篇:oracle中between的用法是什么 下一篇:oracle怎么转换字段类型
    PHP编程就业班

    相关文章推荐

    • oracle中substr的用法是什么• oracle中update的用法是什么• oracle中for update的用法是什么• oracle中merge into的用法是什么• oracle中using的用法是什么• oracle中case when的用法是什么• oracle中between的用法是什么

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网