问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql存储过程怎么写

发布网友 发布时间:2023-07-31 19:32

我来回答

1个回答

热心网友 时间:2024-03-03 17:12


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)
mysql存储过程怎么写

语法格式:可以使用 CREATE PROCEDURE 语句创建存储过程。语法格式如下:CREATE PROCEDURE &lt;过程名&gt; ( [过程参数[,?] ] ) &lt;过程体&gt;[过程参数[,?] ] 格式[ IN | OUT | INOUT ] &lt;参数名&gt; &lt;类型&gt;语法说明如下:1) 过程名存储过程的名称,默认在当前数据库中创建。若需要在特定数据库中创建存储...

mysql 存储过程

(1). 格式 MySQL存储过程创建的格式:CREATE PROCEDURE 过程名 ([过程参数[,...]])[特性 ...] 过程体 这里先举个例子:mysql&gt; DELIMITER // mysql&gt; CREATE PROCEDURE proc1(OUT s int)-&gt; BEGIN -&gt; SELECT COUNT(*) INTO s FROM user;-&gt; END -&gt; // mysql&gt; DELIMITER ;注:(1)这里...

MySQL创建存储过程

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

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 the...

mysql 存储过程 语法

mysql中存储过程的关键语法如下:1、声明语句结束符,可以自定义:DELIMITER $$或DELIMITER //2、声明存储过程:CREATE PROCEDURE demo_in_parameter(IN p_in int) 3、存储过程开始和结束符号:BEGIN ... END4、变量赋值:SET @p_in=15、变量定义:DECLARE l_int int unsigned default 4000000;6、...

mysql如何创建存储过程?

1用mysql客户端登入2 选择数据库 mysql&gt;use test3 查询当前数据库有哪些存储过程 mysql&gt;show procedure status where Db='test'4 创建一个简单的存储过程 mysql&gt;create procedure hi() select 'hello';5 存储过程创建完毕,看怎么调用它 mysql&gt;call hi();显示结果 mysql&gt; call hi(); +---+ | hello |...

在MySQL中创建带有IN和OUT参数的存储过程的方法

mysql存储过程实例详解

创建mysql存储过程、存储函数:create procedure 存储过程名(参数)存储过程体:create function 存储函数名(参数)示例:若是删除给定球员参加的所有比赛,具体代码为:mysql delimiter $$#将语句的结束符号从分号;临时改为两个$$(可以为自定义)mysql CREATE PROCEDURE delete_matches(IN p_playerno ...

mysql 存储过程总结(一)

1、存储过程定义:存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发 人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。2、特点:封装,复用 ...

mysql 数据库创建存储过程是怎么创建的?

创建存储过程 mysql&gt; delimiter $ -- delimiter $是设置 $为命令终止符号,代替默认的分号,因为分号有其他用处.mysql&gt; create procedure sp_test(IN pi_id int, OUT po_name varchar(10))-&gt; begin -&gt; select * from test.tb_test;-&gt; select tb_test.name into po_name from test.tb_test ...

写一个简单的存储过程 mysql数据库存储过程怎么写 mysql怎么创建存储过程 MySQL存储过程语法 数据库存储过程代码怎么写 MySQL创建存储过程sql语句 sql返回查询结果数量 数据库存储过程设计 mysql查看存储过程
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
劲酒酱酒品牌简介,你了解你喜欢的劲酒吗 结肠直肠癌病理 土特产店铺取名字大全新236个 给小孩子洗衣服应该注意什么? 大米可以冷冻在冰箱吗 ...专业技术资格(水平)考试辅导用书:信息处理技术员考试辅导教程目录... ...专业技术资格(水平)考试辅导用书:信息处理技术员考试辅导教程内容简 ... ...专业技术资格(水平)考试辅导用书:信息处理技术员考试辅导教程基本信 ... ...专业技术资格(水平)考试辅导用书:信息处理技术员考试辅导教程编辑推 ... 网络与新媒体专业好还是汉语言文学好 燃气热水器突然没热水 哪3所警校,录取分数不高,能考上就是铁饭碗? 郑州铁道警察学院女生入取分数线 郑州铁道警察学院招生录取分数线是多少 怎样打造混搭风格装修混搭风格装修设计要点 混搭风格的设计元素有哪些 混搭风格设计说明介绍 混搭风格设计时要注意什么 混泥土基础的设计方法 混搭风格应该如何设计装修? 星途与奇瑞的关系 怎么样学好吉他 如何才能学好吉他 坐着时间太长了,站起来头感觉有点晕晕的是什么回事呢? 如何打开USB调试(不能用recovery和fastboot,只能用电脑)? 手机既打进入不了fastboot也进不了recovery也开不了机 没办法打开USB... 东莞市浩征服饰辅料有限公司电话是多少? 澧县萌恒服装辅料公司工资高吗 深圳市联星服装辅料有限公司是专精特新企业吗? ...被未婚夫抛弃,于是她出国当上了一名战地记者,在哪儿,她 刚吧电脑修好下了几个软件重启一下电脑就开不开了,怎么办?求救_百度... 电脑开不了机,有时候能开机玩一会,电脑修了三次了,最后一次换了地方他... 电脑维修的时候别人开的了机,我怎么拿回家就开不了 装卸猪肉累吗 电脑到维修店能开机,回家能开,第二天就开不了了 如何看待白领年入10万,卖猪肉的年入百万? 玉溪市到个旧市 请问大家觉得是去做送餐好呢还是去做搬运工好呢?全职的话送餐有3600保底... 蒙自到昆明的汽车在那里坐票价多少 ...小说,故事情节大概写的是明朝&quot;靖难之役&quot;燕王朱棣发兵夺位朱允文,方... 东方卫视倪瑾是哪里人 新老娘舅节目主持人杨蕾是什么地方? ...可以直接得出“该四边形四点共圆”的结论吗 新课标高考第22题证明四点共圆能直接用同弧所对圆周角相等嘛 四点共圆的判定定理:当对角互补,则四点共圆。求几何直接证明,不用“反... excel小三角怎么弄出来 汾湖到虹桥长途西站最早一趟几点最晚一趟几点 吴江汾湖到上海虹桥火车站的公交车时间查询 我明天上午从上海人民广场出发去江苏省吴江市芦墟镇汽车站,承公共交通... ...知道从虹桥机场坐车到吴江汽车终点站,在虹桥哪里上车及时刻表...