mysql存储过程的基本用法有哪些
发布时间:2025-05-17 09:30:15 发布人:远客网络
一、mysql存储过程的基本用法有哪些
在外部程序访问数据库时(例如 PHP),要组织很多 SQL语句。
特别是业务逻辑复杂的时候,一大堆的 SQL和条件夹杂在 PHP代码中,让人不寒而栗。现在有了 MySQL存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高。
"pr_add"是个简单的 MySQL存储过程,这个MySQL存储过程有两个 int类型的输入参数"a"、"b",返回这两个参数的和。
drop procedure if exists pr_add;
不能在 MySQL存储过程中使用。return只能出现在函数中。
执行 MySQL存储过程,存储过程参数为 MySQL用户变量。
创建 MySQL存储过程的简单语法为:
create procedure存储过程名字()
MySQL存储过程参数如果不显式指定"in"、"out"、"inout",则默认为"in"。习惯上,对于是"in"的参数,我们都不会显式指定。
1. MySQL存储过程名字后面的"()"是必须的,即使没有一个参数,也需要"()"
2. MySQL存储过程参数,不能在参数名称前加"@",如:"@a int"。下面的创建存储过程语法在 MySQL中是错误的(在 SQL Server中是正确的)。 MySQL存储过程中的变量,不需要在变量名字前加"@",虽然 MySQL客户端用户变量要加个"@"。
3. MySQL存储过程的参数不能指定默认值。
4. MySQL存储过程不需要在 procedure body前面加"as"。而 SQL Server存储过程必须加"as"关键字。
5.如果 MySQL存储过程中包含多条 MySQL语句,则需要 begin end关键字。
6. MySQL存储过程中的每条语句的末尾,都要加上分号";"
declare c int;--这是单行 MySQL注释(注意--后至少要有一个空格)
if a is null then#这也是个单行 MySQL注释
二、SQL 中存储过程怎么使用
drop procedure if exists GetUsers;
1、MySql支持 IN(传递给存储过程), OUT(从存储过程传出)和 INOUT(对存储过程传入和传出)类型的参数,存储过程的代码位于 BEGIN和 END语句内,它们是一系列 SQL语句,用来检索值,然后保存到相应的变量(通过指定INTO关键字);
2、下面的存储过程接受三个参数,分别用于获取用户表的最小,平均,最大分数,每个参数必须具有指定的类型,这里使用十进制值(decimal(8,2)),关键字 OUT指出相应的参数用来从存储过程传出
select min(score) into minScore from user;
select avg(score) into avgScore from user;
select max(score) into maxScore from user;
3、调用此存储过程,必须指定3个变量名(所有 MySql变量都必须以@开始),如下所示:
call GetScores(@minScore,@avgScore,@maxScore);12
4、该调用并没有任何输出,只是把调用的结果赋给了调用时传入的变量@minScore,@avgScore,@maxScore,然后即可调用显示该变量的值:
select@minScore,@avgScore,@maxScore;
5、使用 IN参数,输入一个用户 id,返回该用户的名字:
call GetNameByID(1,@userName);
三、mysql 存储过程怎么调用
PHP调用MySQL存储过程和函数的方法较为复杂,尤其是在没有直接支持的情况下。MySQL5.0引入了存储过程和函数,PHP可以通过一些间接方法来调用它们。
调用存储过程需要遵循特定步骤。首先,如果存储过程包含IN或INOUT参数,需要声明一个变量,并将PHP变量映射到MySQL变量。这一步骤可通过执行如下的语句实现:set@mysqlvar=$phpvar。然后,使用mysql_query()或mysql_db_query()函数执行这条语句,确保MySQL服务器能识别这个变量。
接下来,根据存储过程的需要执行相应的调用语句。对于存储过程,可以使用call procedure()语句,即mysql_query("call procedure([var1]...)")。如果有返回值,则需要执行select@ar以获取结果。通过mysql_query("select@var)")执行此操作。
如果调用的是函数,则可以直接通过select function()来执行,无需额外的调用步骤。在上述示例中,使用了本地连接来执行存储过程调用,包括设置变量、调用存储过程以及查询结果。
在PHP脚本中,通过mysql_connect()函数建立数据库连接,随后使用mysql_select_db()选择数据库。之后,通过一系列的mysql_query()调用执行存储过程和函数的调用语句,最终通过mysql_fetch_row()获取并显示查询结果。
这里展示了一个具体的例子:首先连接到数据库,设置一个变量,然后调用一个存储过程,并执行select语句以获取返回值。最后,通过echo输出结果。