codecamp

存储过程

一、为什么使用存储过程

        要了解为什么使用存储过程,我们先来看看我们在使用sql操作时的一个流程。下面这张图是截屏慕课网视频教程的图片。

    图片1

        通过查看上面的图片,我们不难看出在执行sql操作过程中的流程是要经过多个过程,如果我们的网站数据量比较小还好,如果大型网站,这样执行下来不久很慢了。如果我们能从中省略一些步骤或者说可以把一些查询到数据暂时存储起来,我们在下次使用的时候,就直接使用存储起来的数据,这样数据的加载就块很多了。这就是存储的目的。

二、存储过程的优势

    1.增强sql语句的功能和灵活性

    2.实现较快的查询(当我们第一次查询的时候就把数据存储起来,或者说将一些数据查询出来之后在存储,当我们再次调用的时候就直接使用上一次存储的数据,就避免了重复的去请求同一个操作)

    3.较少网络流量(当我们将数据存储起来,避免多次加载重复的数据,这样对带宽的消耗也少了很多)

三、如何使用存储过程

    1.创建存储过程 

 create procedure sp_name([[IN |OUT |INOUT ] 参数名 数据类形...])    begin
     执行的sql语句1;
     执行的sql语句2;
    end
    IN 输入参数
	表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
    OUT 输出参数
	该值可在存储过程内部被改变,并可返回
    INOUT 输入输出参数
	调用时指定,并且可被改变和返回
    参数名和sql语句中的字段名不能相同

    示例代码:

1.不带参数
    CREATE PROCEDURE sp_name() SELECT VERSION();
2.带参数
    CREATE PROCEDURE delbyId(IN id INT UNSIGNED)
    BEGIN
        DELETE FROM t_name  WHERE u_id = id;
    END

     2.删除存储过程

 drop procedure sp_name

    不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程

    3.使用存储过程

1.call sp_name ([param])// 带参数
2.call sp_name[(param)] // 不带参数

    4.查询存储过程

show procedure status
show create procedure sp_name

    5.修改存储过程

    不能修改存储体内的东西

    6.通过函数和存储过程的对比,我们可以发现他们有共同之处,那我们该如何选择呢?

        1.存储过程执行功能相对复杂,而函数针对性更强

        2.函数只能有一个返回值,存储过程可以返回多个值

        3.存储过程一般独立执行,而函数可以作为其他sql语句的组成部分来实现




函数操作
触发器操作
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

sqlserver

oracle

db2

mangodb

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }