zoukankan      html  css  js  c++  java
  • 迈入orcl的学习之存储过程

    百度百科:

    存储过程Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象

    一.准备

    1.登录system用户给普通用户权限:(此时的身份是:system

    grant create any table to annan;--授权表的权限给annan角色

    grant create any procedure to annan;

    grant execute any procedure to annan;--授权存储过程的权限给annan角色

    2. 创建一张表(此时的身份是:annan

    --创建一张表
    
    create table usertble(
    usid number(10) primary key not null,
    usName nvarchar2(20) not null,
    uspwd nvarchar2(20) not null
    )
    
    --添加几条数据
    insert into usertble values(2,'3333','1')
    
    --查询
    select * from usertble
    

      

    二.创建存储过程

    (此时的身份是:annan

    1.

    --创建存储过程:通过存储过程来查询usertble的总记录数
    create or replace procedure proce_usertable
    as
    nums number(1);
    begin
      select count(*) into nums from usertble;
      DBMS_OUTPUT.put_line('总人数:'||nums);
    end;
    

    2.去命令下执行

    3.调用存储过程

    --调用存储过程 语法:begin ‘存储过程名称’(变量1,变量2...) end;
    begin
    proce_usertable;
    end;
    

      查询结果:

     

    然后一个储存过程就这样好了。。。。。。。

    三.用储存过程写一个添加用户信息

    --创建存储过程:通过存储过程来添加usertble的信息
    create or replace procedure insert_usertable
    as
    begin
      insert into usertble
      values
      (3,'999999','666');
      end;
      
    --调用存储过程 :insert_usertable
    begin
      insert_usertable;
      end;

    四.带参数的存储过程

    -------------带参的存储过程---------

    ---存储过程的参数

    ---IN 定义一个输入参数变量,用于传递参数给存储过程 

    --OUT 定义一个输出参数变量,用于从存储过程获取数据 

    ---IN OUT 定义一个输入、输出参数变量,兼有以上两者的功能 

     1.in

    --1.创建有参数的存储过程  in :将值传到存储过程中
    create or replace procedure test_in
    (usid in number,usName in nvarchar2,uspwd nvarchar2 default '0')
    as
    begin
      insert into usertble
      values
      (usid,usName,uspwd);
      end;
    
    --调用存储过程:test_in
    begin
      test_in(4,'大灰狼','18');
      end;

     2.out

    --2.创建有参数的存储过程  out :将存储过程中的值传出来
    create or replace procedure test_out
    (usNames out nvarchar2,uspwds out nvarchar2)
    as
    begin
      select usName,uspwd into usNames,uspwds from usertble where usid=4;
      DBMS_OUTPUT.put_line('用户名:'||usNames);
      DBMS_OUTPUT.put_line('密码:'||uspwds);
      end;
      
    --调用存储过程:test_out
    DECLARE
    usNames nvarchar2(20);--声明参数usNames
    uspwds nvarchar2(20);--声明参数uspwds
    begin
      test_out(usNames,uspwds);
      DBMS_OUTPUT.put_line('☆用户名☆:'||usNames);
      DBMS_OUTPUT.put_line('☆密码☆:'||uspwds);
      end;
    

     3.in out

    --3.创建有参数的存储过程  in out :将值传到存储过程中,再将存储过程中的值传出来
    create or replace procedure test_in_out
    (phone in out nvarchar2)
    as
    begin
      phone:='10086-'||phone;
      end;
    
    --调用存储过程:test_in_out
    DECLARE
    phone nvarchar2(20);--声明参数phone
    begin
      phone:='11111';
      test_in_out(phone);
      DBMS_OUTPUT.put_line('☆这个电话是☆:'||phone);
      end;
    

      

  • 相关阅读:
    SpringBoot+AOP+自定义注解
    在win10上安装Linux系统安装
    spring、springMvc、springBoot和springCloud的联系与区别
    spring与springMVC的区别
    spring boot与spring mvc的区别是什么?
    返回的响应代码
    Java为什么要实现Serializable接口
    @Data注解和如何使用,lombok
    使用generatorConfig自动生成实体类与dao的接口以及mappers映射文件
    MyBatis 配置
  • 原文地址:https://www.cnblogs.com/ruiannan/p/8111749.html
Copyright © 2011-2022 走看看