mysql怎么定义存储过程 如何通过用MySQL怎么创建存储过程

seosqwseo3周前 (04-15)测评日记15

一、MySQL创建存储过程

存储过程是数据库管理中常用的技术之一,可以很方便的做些类似数据统计、数据分析等工作,市场上的SQL SERVER、ORACLE、MySQL都支持存储过程,但不同的数据库环境语法结构有点区别,本案例给大家讲解下MySQL创建存储过程的方法

使用常规的创建存储过程方法,发现各种报错,无法执行,在SQL SERVER下很容易成功的写法,在MySQL下居然不行,经过查找资料发现在MySQL中需要设置DELIMITER

这是正确的存储过程写法,可以成功执行,相比较上图的报错,增加了DELIMITER,简单解释下这个命令的用途,在MySQL中每行命令都是用“;”结尾,回车后自动执行,在存储过程中“;”往往不代表指令结束,马上运行,而DELIMITER原本就是“;”的意思,因此用这个命令转换一下“;”为“//”,这样只有收到“//”才认为指令结束可以执行

该存储过程的功能是将“编号”这行记录的流水号+1,在执行存储过程之前,我们查看下数据库中该表的数据情况

执行存储过程使用call命令,与SQL SERVER的exec用法一样,执行后发现了返回值,流水号已经+1

为了确认数据库中数据确实修改,重新执行遍查询*作

该例中使用了start transaction;事务处理,功能就不解释了,但用法与SQL SERVER有点区别,事实上MySQL在很多地方的语法上与SQL SERVER不一样,但功能类似,需要大家多接触,多练习

还有一点需要补充下,在MySQL中似乎没有修改存储过程的命令,执行alter procedure报错

分析了下mysql workbench工具中的alter命令,其实是先执行的drop然后在create,没有直接用alter*作

二、如何通过用MySQL怎么创建存储过程

创建存储过程

CREATE PROCEDURE存储过程名()

一个例子说明:一个返回产品平均价格的存储过程如下代码:

CREATE PROCEDURE productpricing()

BEGIN

SELECT Avg(prod_price) AS priceaverage

FROM products;

END;

//创建存储过程名为productpricing,如果存储过程需要接受参数,可以在()中列举出来。即使没有参数后面仍然要跟()。BEGIN和END语句用来限定存储过程体,过程体本身是个简单的SELECT语句

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

这样:

CREATEPROCEDUREsp_add(a int, b int,outc int)

begin

set c=a+ b;

end;

调用过程:

call sp_add(1,2,@a);

select@a;

扩展资料:

注意事项

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

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

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

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

创建存储过程

SQL Server创建存储过程:

create procedure过程名

@parameter参数类型

@parameter参数类型

。。。

as

begin

end

执行存储过程:execute过程名

四、mysql存储过程怎么写

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

语法格式:

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

语法格式如下:

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

[过程参数[,?] ]格式

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

1)过程名

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

2)过程参数

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

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

3)过程体

存储过程的主体部分,也称为存储过程体,包含在过程调用的时候必须执行的 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> DELIMITER//

mysql> CREATE PROCEDURE ShowStuScore()

-> BEGIN

-> SELECT* FROM tb_students_score;

-> END//

Query OK, 0 rows affected(0.09 sec)

相关文章

康佳电视Y50使用感受如何

康佳电视Y50使用感受如何

很多小伙伴在关注康佳电视Y50怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

小米(MI)电视EA测评分享

小米(MI)电视EA测评分享

很多小伙伴在关注小米(MI)电视EA怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

海信电视50英寸使用感受如何

海信电视50英寸使用感受如何

很多小伙伴在关注海信电视50英寸怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

TCL电视50英寸使用感受分享

TCL电视50英寸使用感受分享

很多小伙伴在关注TCL电视50英寸怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

TCL电视55V8E测评分享

TCL电视55V8E测评分享

很多小伙伴在关注TCL电视55V8E怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

索尼(SONY)XR-65X90K质量怎么样

索尼(SONY)XR-65X90K质量怎么样

很多小伙伴在关注索尼(SONY)XR-65X90K怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看...