您当前的位置:首页 > 互联网教程

mysql存储过程怎么写

发布时间:2025-05-14 21:56:49    发布人:远客网络

mysql存储过程怎么写

一、mysql存储过程怎么写

MySQL存储过程是一些 SQL语句的集合,比如有的时候我们可能需要一大串的 SQL语句,或者说在编写 SQL语句的过程中还需要设置一些变量的值,这个时候我们就完全有必要编写一个存储过程。下面我们来介绍一下如何创建一个存储过程。

可以使用 CREATE PROCEDURE语句创建存储过程。

CREATE PROCEDURE<过程名>( [过程参数[,?] ])<过程体>

[ IN| OUT| INOUT ]<参数名><类型>语法说明如下:

存储过程的名称,默认在当前数据库中创建。若需要在特定数据库中创建存储过程,则要在名称前面加上数据库的名称,即 db_name.sp_name。需要注意的是,名称应当尽量避免选取与 MySQL内置函数相同的名称,否则会发生错误。

存储过程的参数列表。其中,<参数名>为参数名,<类型>为参数的类型(可以是任何有效的 MySQL数据类型)。当有多个参数时,参数列表中彼此间用逗号分隔。存储过程可以没有参数(此时存储过程的名称后仍需加上一对括号),也可以有 1个或多个参数。

MySQL存储过程支持三种类型的参数,即输入参数、输出参数和输入/输出参数,分别用 IN、OUT和 INOUT三个关键字标识。其中,输入参数可以传递给一个存储过程,输出参数用于存储过程需要返回一个操作结果的情形,而输入/输出参数既可以充当输入参数也可以充当输出参数。需要注意的是,参数的取名不要与数据表的列名相同,否则尽管不会返回出错信息,但是存储过程的 SQL语句会将参数名看作列名,从而引发不可预知的结果。

存储过程的主体部分,也称为存储过程体,包含在过程调用的时候必须执行的 SQL语句。这个部分以关键字 BEGIN开始,以关键字 END结束。若存储过程体中只有一条 SQL语句,则可以省略 BEGIN-END标志。

在存储过程的创建中,经常会用到一个十分重要的 MySQL命令,即 DELIMITER命令,特别是对于通过命令行的方式来操作 MySQL数据库的使用者,更是要学会使用该命令。

在 MySQL中,服务器处理 SQL语句默认是以分号作为语句结束标志的。然而,在创建存储过程时,存储过程体可能包含有多条 SQL语句,这些 SQL语句如果仍以分号作为语句结束符,那么 MySQL服务器在处理时会以遇到的第一条 SQL语句结尾处的分号作为整个程序的结束符,而不再去处理存储过程体中后面的 SQL语句,这样显然不行。为解决这个问题,通常可使用 DELIMITER命令将结束命令修改为其他字符。

DELIMITER$$语法说明如下:$$是用户定义的结束符,通常这个符号可以是一些特殊的符号,如两个“?”或两个“¥”等。当使用 DELIMITER命令时,应该避免使用反斜杠“\”字符,因为它是 MySQL的转义字符。

在 MySQL命令行客户端输入如下SQL语句。

mysql> DELIMITER??成功执行这条 SQL语句后,任何命令、语句或程序的结束标志就换为两个问号“??”了。

若希望换回默认的分号“;”作为结束标志,则在 MySQL命令行客户端输入下列语句即可:

mysql> DELIMITER;注意:DELIMITER和分号“;”之间一定要有一个空格。在创建存储过程时,必须具有 CREATE ROUTINE权限。可以使用 SHOW PROCEDURE STATUS命令查看数据库中存在哪些存储过程,若要查看某个存储过程的具体信息,则可以使用 SHOW CREATE PROCEDURE<存储过程名>。

存储过程的作用是从学生成绩信息表中查询学生的成绩信息,输入的 SQL语句和执行过程如下所示。

mysql> CREATE PROCEDURE ShowStuScore()

-> SELECT* FROM tb_students_score;

Query OK, 0 rows affected(0.09 sec)

二、MySQL里面sql语句调用存储过程,该如何写

1、CREATEPROCEDUREsp_add(a int, b int,outc int)

2、存储过程(stored procedure)是一组为了完成特定功能的SQL语句集合,经编译后存储在服务器端的数据库中,利用存储过程可以加速SQL语句的执行。

3、存储过程分为系统存储过程和自定义存储过程。

4、系统存储过程在master数据库中,但是在其他的数据库中可以直接调用,并且在调用时不必在存储过程前加上数据库名,因为在创建一个新数据库时,系统存储过程在新的数据库中会自动创建。

5、自定义存储过程,由用户创建并能完成某一特定功能的存储过程,存储过程既可以有参数又有返回值,但是它与函数不同,存储过程的返回值只是指明执行是否成功,并不能像函数那样被直接调用,只能利用execute来执行存储过程。

三、mysql 存储过程 是什么意思

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

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

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

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

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

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

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

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

END

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

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

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

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