zoukankan      html  css  js  c++  java
  • 数据库对象——序列,存储过程


    序列

    序列的创建、使用、删除

    --序列的创建
    create sequence seq_tem_user
    start with 1
    increment by 1  
    
    --序列的使用
    insert into tem_user values(seq_tem_user.nextval,'admin','123')
    
    --序列的删除
    drop sequence seq_tem_user;
    
    

    练习:序列

    --每一个序列只服务一张表
    create sequence seq_tem_user
    start with  1   --开始值为1
    increment by 1 ; --每次增长1个,(步长,频次) 
    
    
    --表创建的时候,序列被创建好了
    select seq_tem_user.currval from dual

    存储过程

    存储过程概述

    • 预先存储好的SQL程序。
    • 保存在Oracle中。
    • 通过名称和参数执行。
    • 可带参数,也可返回结果。
    • 可包含数据操纵语句、变量、逻辑控制语句等。

    优点:

    1. 执行速度更快
    2. 减少网络流通量

    如何创建存储过程

    定义存储过程语法:

    create or replace procedure 存储过程名
    ( 参数1 in | out | in out 数据类型,
    ......
        参数2 in | out | in out 数据类型 )
    AS
    BEGIN
    SQL语句
    END

    存储过程的参数:

    • 参数可选
    • 参数分为输入参数(in)、输出参数( out )

    IN:当调用存储过程的时候,该模式的形参接收对应实参的值,并且该形参是只读的,即不能被修改。如果在创建存储过程时没有指定参数的模式,则默认为IN。

    OUT:在存储过程中,该形参被认为是只能写,即只能为其赋值。在存储过程中不能读它的值。返回时,将该形参值传给相应的实参。

    IN OUT:该模式是前两种模式的合并。

    存储过程的处理部分

    一个PL/SQL块,该块包含定义部分、可执行部分以及异常处理部分,其中可执行部分是必须有的。

    CREATE OR REPLACE 过程名
    (
        --参数定义部分
    )    
    IS
        --局部变量定义部分
    BEGIN
        --可执行部分
    EXCEPTION
        --异常处理部分
    END 过程名;

    带有输入参数的存储过程

    --创建带有参数的存储过程。
    --参数数据类型不要加长度。
    --参数类型不加 in or out 时,默认是 in 。 即输入参数。
    --调用参数的存储过程,必须要传参。
    create or replace procedure with_param_pro(str in VARCHAR2)
    as
    begin
      dbms_output.put_line(str);
    end;
    
    带有参数的存储过程运行:
    set serveroutput on;
    begin
      with_param_pro('测试数据');
    end;

    调用存储过程

    方法一:
    set serveroutput on;
    begin
      with_param_pro(7654);
    end;
    方法二:
    exec   with_param_pro(7654);
    exec   with_param_pro(eno=>7788);

    练习:存储过程之存储数据

    create or replace procedure car_add_pro 
    (type_name VARCHAR2,exhaust VARCHAR2,price number,create_date date)
    as
    begin
      insert into car values(car_seq.nextval, type_name, price, create_date, exhaust);
      COMMIT;
      dbms_output.put_line('数据存储成功');
    EXCEPTION
      when OTHERS then dbms_output.put_line('数据存储失败');
    END ;

    练习:存储过程之通过编号查询员工姓名及工资

    create or replace procedure emp_print_pro(eno emp.empno%type)
    as
      emp_ emp%rowtype;
    begin
      select * into emp_ from emp where empno=eno;
      dbms_output.put_line('员工的姓名是'||emp_.ename||',基本工资是'||emp_.sal);
    end;

    练习:存储过程的运行

    set serveroutput on;
    begin
      with_param_pro(emp.empno);
    end;
  • 相关阅读:
    正则表达式
    查看当前文件大小
    logging日志快速上手
    kafka消息队列的使用
    修改文件权限给指定的用户
    使用Dockerfile构建镜像
    k8s 常用命令总结
    k8s pod.yaml配置文件参数
    Linux安装依赖包
    Freeswitch配置SIP网关拨打外部
  • 原文地址:https://www.cnblogs.com/aixing/p/13327693.html
Copyright © 2011-2022 走看看