首页技术mysql存储过程 mysql存储过程实例详解

mysql存储过程 mysql存储过程实例详解

编程之家2026-06-291168次浏览

老铁们,大家好,相信还有很多朋友对于mysql存储过程和mysql存储过程实例详解的相关问题不太懂,没关系,今天就由我来为大家分享分享mysql存储过程以及mysql存储过程实例详解的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

mysql存储过程 mysql存储过程实例详解

mysql 存储过程 是什么意思

存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。

一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。

存储过程通常有以下优点:

存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。

存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。

存储过程能实现较快的执行速度。如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。

mysql存储过程 mysql存储过程实例详解

存储过程能过减少网络流量。针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载。

存储过程可被作为一种安全机制来充分利用。系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。

MySQL存储过程创建的格式如下:

CREATE PROCEDURE过程名([过程参数[,...]])

[特性...]过程体

举例代码如下:

mysql存储过程 mysql存储过程实例详解

CREATEPROCEDUREproc1(OUTsint)

BEGIN

SELECTCOUNT(*)INTOsFROMuser;

END存储过程根据需要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用","分割开。

过程体的开始与结束使用BEGIN与END进行标识。

注意:MySQL在5.0以前并不支持存储过程

mysql中的存储过程是什么意思啊

存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集

功能是将常用或复杂的工作,预先用SQL语句写好并用一个指定名称存储起来,以后需要数据库提供与已定义好的存储过程的功能相同的服务时,只需调用 call存储过程名字,即可自动完成命令。

存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,可由应用程序通过一个调用来执行,而且允许用户声明变量。

同时,存储过程可以接收和输出参数、返回执行存储过程的状态值,也可以嵌套调用。

mysql存储过程的基本用法有哪些

mysql存储过程的基本用法有哪些

在外部程序访问数据库时(例如 PHP),要组织很多 SQL语句。

特别是业务逻辑复杂的时候,一大堆的 SQL和条件夹杂在 PHP代码中,让人不寒而栗。现在有了 MySQL存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高。

一、MySQL创建存储过程

"pr_add"是个简单的 MySQL存储过程,这个MySQL存储过程有两个 int类型的输入参数"a"、"b",返回这两个参数的和。

复制代码代码如下:

drop procedure if exists pr_add;

计算两个数之和

复制代码代码如下:

create procedure pr_add

(

a int,

b int

)

begin

declare c int;

if a is null then

set a= 0;

end if;

if b is null then

set b= 0;

end if;

set c= a+ b;

select c as sum;

/*

return c;

不能在 MySQL存储过程中使用。return只能出现在函数中。

*/

end;

二、调用 MySQL存储过程

复制代码代码如下:

call pr_add(10, 20);

执行 MySQL存储过程,存储过程参数为 MySQL用户变量。

复制代码代码如下:

set@a= 10;

set@b= 20;

call pr_add(@a,@b);

三、MySQL存储过程特点

创建 MySQL存储过程的简单语法为:

复制代码代码如下:

create procedure存储过程名字()

(

[in|out|inout]参数 datatype

)

begin

MySQL语句;

end;

MySQL存储过程参数如果不显式指定"in"、"out"、"inout",则默认为"in"。习惯上,对于是"in"的参数,我们都不会显式指定。

1. MySQL存储过程名字后面的"()"是必须的,即使没有一个参数,也需要"()"

2. MySQL存储过程参数,不能在参数名称前加"@",如:"@a int"。下面的创建存储过程语法在 MySQL中是错误的(在 SQL Server中是正确的)。 MySQL存储过程中的变量,不需要在变量名字前加"@",虽然 MySQL客户端用户变量要加个"@"。

复制代码代码如下:

create procedure pr_add

(

@a int,--错误

b int--正确

)

3. MySQL存储过程的参数不能指定默认值。

4. MySQL存储过程不需要在 procedure body前面加"as"。而 SQL Server存储过程必须加"as"关键字。

复制代码代码如下:

create procedure pr_add

(

a int,

b int

)

as--错误,MySQL不需要"as"

begin

mysql statement...;

end;

5.如果 MySQL存储过程中包含多条 MySQL语句,则需要 begin end关键字。

复制代码代码如下:

create procedure pr_add

(

a int,

b int

)

begin

mysql statement 1...;

mysql statement 2...;

end;

6. MySQL存储过程中的每条语句的末尾,都要加上分号";"

复制代码代码如下:

...

declare c int;

if a is null then

set a= 0;

end if;

...

end;

7. MySQL存储过程中的注释。

复制代码代码如下:

/*

这是个

多行 MySQL注释。

*/

declare c int;--这是单行 MySQL注释(注意--后至少要有一个空格)

if a is null then#这也是个单行 MySQL注释

set a= 0;

end if;

END,本文到此结束,如果可以帮助到大家,还望关注本站哦!

marquee标签属性,html中marquee标签对勾函数,飘带函数