zoukankan      html  css  js  c++  java
  • 了解sql存储过程

            存储过程的定义:在大型数据库系统中 , 一组为了完成特定功能的 SQL 语句集 , 存储在数据库中 , 经过第一次编译后再次调用不需要再次编译 , 用户通过指定存储过程的名字并给出参数 (如果该存储过程带有参数) 来执行它 , 存储过程是数据库中的一个重要对象 ; 存储过程中可以包含 逻辑控制语句 和 数据操纵语句 , 它可以接受参数 , 输出参数 , 返回单个或多个结果集以及返回值 。

    优点:精简,可维护性高,安全性更高。

    缺点:可移植性差

    我这里就简单介绍一下优缺点,我主要是来讲一下怎么用。

    存储过程的基本格式;

    create produce 存储名(参数)

    begin

       sql语句;

    end;

    怎么调用:call 存储名(参数);

    怎么删除:drop produce if exists 存储名;

    怎么使用带参数的存储过程,我举个例子

    create procedure GetScores(
        out minScore decimal(8,2),
        out avgScore decimal(8,2),
        out maxScore decimal(8,2)
    )
    begin
        select min(score) into minScore from user;
        select avg(score) into avgScore from user;
        select max(score) into maxScore from user;
    end;

    调用此存储过程,首先参数前面你要加@

    call getscores(@minscore,@avgscore,@maxscore)//写存储过程的时候不用加@.当你传入参数使用的时候要加上@。为了减少出错,写存储过程的时候变量名最好都加个2@.

    记住返回的值都在@minscore,@avgscore,@maxscore这几个参数里也就是调用前世参数,调用后是结果。

    所以选取值时应用select @minscore,@avgscore,@maxscore.

    注意:记住sql的三个参数MySql 支持 IN (传递给存储过程) , OUT (从存储过程传出) 和 INOUT (对存储过程传入和传出) 类型的参数 , 存储过程的代码位于 BEGIN 和 END 语句内 , 它们是一系列 SQL 语句 , 用来检索值 , 然后保存到相应的变量 (通过指定INTO关键字) ;

    解释一下就是通过INTO来传值。

    create procedure GetNameByID(
        in userID int,
        out userName varchar(200)
    )
    begin
        select name from user
        where id = userID
        into userName;
    end;

    上面的代码就是传入useid,然后传出usename

  • 相关阅读:
    ORACLE不常用但实用的技巧- 树查询 level用法
    oracle的start with connect by prior如何使用
    Oracle SQL日期及日期格式获取命令
    2019年起一般纳税人和小规模纳税人的区别
    10.pandas的替换和部分替换(replace)
    pandas中.value_counts()的用法
    Python模块/包/库安装几种方法(转载)
    预处理数据的方法总结(使用sklearn-preprocessing)
    python时间序列分析之_用pandas中的rolling函数计算时间窗口数据
    BZOJ2007 [Noi2010]海拔
  • 原文地址:https://www.cnblogs.com/xyyshishuaige/p/8667445.html
Copyright © 2011-2022 走看看