mysql开发存储过程(什么是mysql存储过程)

本文目录
- 什么是mysql存储过程
- mysql如何调用存储过程
- mysql如何调试存储过程
- mysql 存储过程总结(一)
- MYSQL存储过程开发中如何使用游标嵌套_MySQL
- mysql存储过程是什么
- MySql编写一个存储过程
- mysql存储过程使用技巧有哪些
- mysql如何创建存储过程
- MySQL数据库新特性之存储过程入门教程
什么是mysql存储过程
MySQL中的存储过程指的是存储在数据库中的SQL语句集合,当创建好存储过程后在运行时提供所需参数,存储过程就可以以代码指定的方式使用参数执行并返回值
在MySQL中提供了创建存储过程的能力。存储过程是MySQL以及其他数据库管理系统中的强大功能。接下来在文章中将为大家具体介绍MySQL中的存储过程,具有一定的参考作用,希望对大家有所帮助。
【推荐课程:MySQL教程】
存储过程:
存储过程指的是存储在数据库中的SQL语句的集合。存储过程它可以包含业务逻辑,这是区分存储过程和视图的关键之一。另外存储过程还可以接受参数,我们可以在存储过程中设置变量,写入语句等。
存储过程如何工作
首先要先创建一个存储过程然后再运行。在运行的过程中需要提供它所需要的参数,然后存储过程将以代码指定的任何方式使用参数执行。例如,编写一个接受FruitId参数的存储过程。然后在存储过程可以获取该参数并使用它来检查该特定水果的库存。因此我们可以调用存储过程,即每次使用不同的水果ID它都将返回一个值,并显示该库存中有多少水果。
创建存储过程
我们可以通过CREATE PROCEDURE语句创建存储过程
CREATE PROCEDURE demo_name(p_1 INT)
BEGIN
...code goes here...
END;demo_name指的是存储过程的名称,括号是必须的,如果里面不包含任何参数则括号可以为空
存储过程的主体是介于BEGIN和END关键字之间。这些关键字用于编写复合语句。复合语句可以包含多个语句,如果需要,可以嵌套这些语句。
例:创建一个存储过程名为FruitStock:
DELIMITER //
CREATE PROCEDURE FruitStock(thisFruit SMALLINT)
BEGIN
SELECT
Fruit.FruitName,
Fruit.Inventory,
Units.UnitName
FROM
Fruit INNER JOIN Units ON
Fruit.UnitId = Units.UnitId
WHERE
Fruit.FruitId = thisFruit;
END //
DELIMITER ;创建好了一个存储过程,接下来将调用这个存储过程
调用一个参数为1的ID
CALL FruitStock(1);删除存储过程
可以使用DROP PROCEDURE语句删除存储过程。
DROP PROCEDURE FruitStock;改变存储过程
在存储过程中可通过下列语句更改存储过程ALTER PROCEDURE。
需要注意要更改存储过程的主体或其任何参数时,需要删除该过程然后再次创建
例:添加Fruit.FruitId所要返回的列表
DROP PROCEDURE IF EXISTS FruitStock;
DELIMITER //
CREATE PROCEDURE FruitStock(thisFruit SMALLINT)
BEGIN
SELECT
Fruit.FruitId,
Fruit.FruitName,
Fruit.Inventory,
Units.UnitName
FROM
Fruit INNER JOIN Units ON
Fruit.UnitId = Units.UnitId
WHERE
Fruit.FruitId = thisFruit;
END //
DELIMITER ;总结:
mysql如何调用存储过程
MySQL调用存储过程必须要使用call语句调用,且存储过程需要和数据库相关,如果不相关则需要指定数据库名称
使用存储过程,可以使程序执行效率更高,安全性更好,增强程序的可重用性和维护性
调用存储过程
存储过程有多种调用方法
存储过程必须使用CALL语句调用,并且,存储过程和数据库相关,如果,要执行其他数据库中的存储过程,需要指定数据库名称
语法格式
CALL sp_name ()参数说明
Sp_name,为存储过程的名称
parameter,为存储过程的参数
定义一个名为CountProc1的存储过程,然后,调用这个存储过程
定义存储过程
调用存储过程
查看返回结果
mysql如何调试存储过程
【相关学习推荐:mysql学习】
mysql调试存储过程的方法:
在navicat中调用存储过程
1. 写语句调用
call p_next_id(’t_factory’,2,’0’,@result); -- 上面的存储过程含有四个参数,所以这里调用的时候,也需要传递4个参数:输入参数填写值,输出参数用变量表示@result
select @result; -- 这句话是在控制台显示变量值2. 窗口点击
直接点击运行时,在弹出输入框输入:
’t_factory’,2,’0’,@result追踪存储过程执行步骤
mysql不像oracle有plsqldevelper工具用来调试存储过程,所以有两简单的方式追踪执行过程:
用一张临时表,记录调试过程
直接在存储过程中,增加select @xxx,在控制台查看结果:
例如我把上面的存储过程中加一些查询语句(注意下面的红色语句)
CREATE PROCEDURE `p_next_id`(kind_name VARCHAR(30), i_length int,currentSeqNo VARCHAR(3),OUT o_result INT)
BEGIN
SET @a= NULL;
SET @b= NULL;
SELECT id INTO @a FROM t_seq WHERE number= currentSeqNo and length= i_length ;
SELECT @a;
IF (@a is null ) THEN
select min(id) into @a FROM t_seq where length = i_length;
select number INTO @b FROM t_seq WHERE id = @a;
select @b;
ELSE
select number INTO @b FROM t_seq WHERE id = @a+1;
END IF;
SELECT @b INTO o_result;
END
mysql 存储过程总结(一)
1、存储过程定义:
存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发 人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。
2、特点:
封装,复用 : 可以把某一业务SQL封装在存储过程中,需要用到 的时候直接调用即可。
可以接收参数,也可以返回数据 :再存储过程中,可以传递参数,也可以接收返回 值。
减少网络交互,效率提升 : 如果涉及到多条SQL,每执行一次都是一次网络传 输。 而如果封装在存储过程中,我们只需要网络交互一次可能就可以了。
3、基本语法
(1)创建:
(2)调用:
(3)查看:
(4)删除
注意: 在命令行中,执行创建存储过程的SQL时,需要通过关键字 delimiter 指定SQL语句的 结束符。
MYSQL存储过程开发中如何使用游标嵌套_MySQL
bitsCN.com
MYSQL存储过程开发中如何使用游标嵌套 在实际业务逻辑开发中,难免用到游标嵌套,举例如下: delimiter //drop procedure if exists good_nested_cursors1//CREATE PROCEDURE good_nested_cursors1( ) READS SQL DATABEGIN DECLARE l_grade_id INT; DECLARE l_class_id INT; DECLARE l_class_cnt INT DEFAULT 0 ; DECLARE l_done INT DEFAULT 0; DECLARE grade_csr cursor FOR SELECT grade_id FROM org_grade; DECLARE class_csr cursor FOR SELECT class_id FROM org_class WHERE grade_id=l_grade_id; DECLARE CONTINUE HANDLER FOR NOT FOUND SET l_done=1; OPEN grade_csr; grade_loop: LOOP -- Loop through org_grade FETCH grade_csr into l_grade_id; select concat(’年级:’, l_grade_id); IF l_done=1 THEN LEAVE grade_loop; END IF; OPEN class_csr; SET l_class_cnt=0; class_loop: LOOP -- Loop through class in grade. FETCH class_csr INTO l_class_id; IF l_done=1 THEN LEAVE class_loop; END IF; SET l_class_cnt=l_class_cnt+1; select concat(’ 班级:’, l_class_id); END LOOP; CLOSE class_csr; SET l_done=0; END LOOP grade_loop; CLOSE grade_csr; END;// delimiter ; /////////////////////////////////////////////////////////另一个例子:CREATE PROCEDURE curdemo() NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT ’’ BEGIN declare done1,done2 int default 0; declare name1,name2 varchar(20); declare id1,id2 int; declare cur1 cursor for select id,name from test1; declare continue handler for not found set done1 = 1; open cur1; repeat fetch cur1 into id1, name1; if not done1 then insert into test3(name) values(name1); begin declare cur2 cursor for select id,name from test2; declare continue handler for not found set done2 = 1; open cur2; repeat fetch cur2 into id2,name2; if not done2 then insert into test3(name) values(name2); end if; until done2 end repeat; close cur2; set done2=0; end; end if; until done1 end repeat; close cur1; commit; END; /// 作者 蔡磊bitsCN.com
mysql存储过程是什么
更多相关免费学习推荐:mysql教程(视频)
存储过程简介
我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。
存储过程通常有以下优点:
存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。
存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。
存储过程能实现较快的执行速度。如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。
存储过程能过减少网络流量。针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载。
存储过程可被作为一种安全机制来充分利用。系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。
关于MySQL的存储过程
存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。好在MySQL 5.0终于开始已经支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。
MySQL存储过程的创建
(1). 格式
MySQL存储过程创建的格式:CREATE PROCEDURE 过程名 ( 过程体
这里先举个例子:
mysql》 DELIMITER //
mysql》 CREATE PROCEDURE proc1(OUT s int)
-》 BEGIN
-》 SELECT COUNT(*) INTO s FROM user;
-》 END
-》 //
mysql》 DELIMITER ;注:
这里需要注意的是DELIMITER //和DELIMITER ;两句,DELIMITER是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。
存储过程根据需要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用","分割开。
过程体的开始与结束使用BEGIN与END进行标识。
(2). 声明分割符
其实,关于声明分割符,上面的注解已经写得很清楚,不需要多说,只是稍微要注意一点的是:如果是用MySQL的Administrator管理工具时,可以直接创建,不再需要声明。
(3). 参数
MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT,形式如:
CREATE PROCEDURE()
IN 输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
OUT 输出参数:该值可在存储过程内部被改变,并可返回
INOUT 输入输出参数:调用时指定,并且可被改变和返回
代码示例
header(’Content-Type:text/html;charset=UTF-8’);
$conn = mysql_connect(’localhost’,’root’,’123456’) or die ("数据连接错误!!!");
mysql_select_db(’test’,$conn);实例一:无参的存储过程
$sql = "create procedure myproce()
begin
INSERT INTO user (id, username, sex) VALUES (NULL, ’s’, ’0’);
end;
";
$res = mysql_query($sql);//创建一个myproce的存储过程
$sql = "call test.myproce();";
$res = mysql_query($sql);//调用myproce的存储过程,则数据库中将增加一条新记录。
var_dump($res);实例二:传入参数的存储过程
//$sql = "create procedure myproce2(in score int)
//begin
//if score 》= 60 then
//select ’pass’;
//else
//select ’no’;
//end if;
//end;
//";
//mysql_query($sql);//创建一个myproce2的存储过程
//$sql = "call test.myproce2(90);";
//$reslut = mysql_query($sql);//调用myproce2的存储过程,看不到效果,可以在cmd下看到结果。
//$array = mysql_fetch_array($reslut);
//var_dump($array);
MySql编写一个存储过程
1、delimiter // ,声明分隔符:DELIMITER是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码(这里如果不懂的话,你可以通过试错的方法来理解)。
2、编写存储过程的格式:CREATE PROCEDURE()
例子:
1)create procedure proc1(out s int) // 只有输出
2)create procedure proc2(in p_in bigint) // 只有输入
3)create procedure proc15() // 没有输入与输出
4)create procedure demo_multi_param(in id bigint,in name varchar(32),out c int) //多输入与输出
3、过程体的开始与结束使用BEGIN与END进行标识。
4、select count (*) into s from student; // 过程体,一系列的逻辑语句,sql语句
5、delimiter ; 用完了之后要把分隔符还原。
mysql存储过程使用技巧有哪些
mysql存储过程使用技巧有:
定义
一组预先编译好的SQL语句的集合,理解成批处理语句,类似于java中的方法
1、提高代码的重用性
2、简化操作
3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
创建语法
CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
存储过程体(一组合法的SQL语句)
END参数列表包含三部分
参数模式 参数名 参数类型
举例:
in stuname varchar(20)参数模式:
in:该参数可以作为输入,也就是该参数需要调用方传入值
out:该参数可以作为输出,也就是该参数可以作为返回值
inout:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值
如果存储过程体仅仅只有一句话,begin end可以省略
存储过程体中的每条sql语句的结尾要求必须加分号。
存储过程的结尾可以使用 delimiter 重新设置
语法:
delimiter 结束标记案例:
delimiter $调用语法
CALL 存储过程名(实参列表);空参列表
插入到admin表中五条记录
SELECT * FROM admin;
DELIMITER $
CREATE PROCEDURE myp1()
BEGIN
INSERT INTO admin(username,`password`)
VALUES(’john1’,’0000’),(’lily’,’0000’),(’rose’,’0000’),(’jack’,’0000’),(’tom’,’0000’);
END $
#调用
CALL myp1()$创建带in模式参数的存储过程
创建存储过程实现 根据女神名,查询对应的男神信息
CREATE PROCEDURE myp2(IN beautyName VARCHAR(20))
BEGIN
SELECT bo.*
FROM boys bo
RIGHT JOIN beauty b ON bo.id = b.boyfriend_id
WHERE b.name=beautyName;
END $
#调用
CALL myp2(’柳岩’)$创建存储过程实现,用户是否登录成功
CREATE PROCEDURE myp4(IN username VARCHAR(20),IN PASSWORD VARCHAR(20))
BEGIN
DECLARE result INT DEFAULT 0;#声明并初始化
SELECT COUNT(*) INTO result#赋值
FROM admin
WHERE admin.username = username
AND admin.password = PASSWORD;
SELECT IF(result》0,’成功’,’失败’);#使用
END $
#调用
CALL myp3(’张飞’,’8888’)$创建out 模式参数的存储过程
根据输入的女神名,返回对应的男神名
CREATE PROCEDURE myp6(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20))
BEGIN
SELECT bo.boyname INTO boyname
FROM boys bo
RIGHT JOIN
beauty b ON b.boyfriend_id = bo.id
WHERE b.name=beautyName ;
END $根据输入的女神名,返回对应的男神名和魅力值
CREATE PROCEDURE myp7(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20),OUT usercp INT)
BEGIN
SELECT boys.boyname ,boys.usercp INTO boyname,usercp
FROM boys
RIGHT JOIN
beauty b ON b.boyfriend_id = boys.id
WHERE b.name=beautyName ;
END $
#调用
CALL myp7(’小昭’,@name,@cp)$
SELECT @name,@cp$创建带inout模式参数的存储过程
传入a和b两个值,最终a和b都翻倍并返回
CREATE PROCEDURE myp8(INOUT a INT ,INOUT b INT)
BEGIN
SET a=a*2;
SET b=b*2;
END $
#调用
SET @m=10$
SET @n=20$
CALL myp8(@m,@n)$
SELECT @m,@n$删除存储过程
drop procedure 存储过程名
DROP PROCEDURE p1;
DROP PROCEDURE p2,p3;#×查看存储过程的信息
DESC myp2;
SHOW CREATE PROCEDURE myp2;
mysql如何创建存储过程
存储过程(Stored Procedure):一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。
推荐课程:MySQL教程。
优点(为什么要用存储过程?):
①将重复性很高的一些操作,封装到一个存储过程中,简化了对这些SQL的调用
②批量处理:SQL+循环,减少流量,也就是“跑批”
③统一接口,确保数据的安全
相对于oracle数据库来说,MySQL的存储过程相对功能较弱,使用较少。
一、存储过程的创建和调用
》存储过程就是具有名字的一段代码,用来完成一个特定的功能。
》创建的存储过程保存在数据库的数据字典中。
1、创建存储过程
CREATE
PROCEDURE sp_name ()
routine_body
proc_parameter:
param_name type
characteristic:
COMMENT ’string’
| LANGUAGE SQL | DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER }
routine_body:
Valid SQL routine statement
BEGIN
??
END #创建数据库,备份数据表用于示例操作
mysql》 create database db1;
mysql》 use db1;
mysql》 create table PLAYERS as select * from TENNIS.PLAYERS;
mysql》 create table MATCHES as select * from TENNIS.MATCHES;示例:创建一个存储过程,删除给定球员参加的所有比赛
mysql》 delimiter $$#将语句的结束符号从分号;临时改为两个$$(可以是自定义)
mysql》 CREATE PROCEDURE delete_matches(IN p_playerno INTEGER)
-》 BEGIN
-》 DELETE FROM MATCHES
-》 WHERE playerno = p_playerno;
-》 END$$
Query OK, 0 rows affected (0.01 sec)
mysql》 delimiter ;#将语句的结束符号恢复为分号解析:
默认情况下,存储过程和默认数据库相关联,如果想指定存储过程创建在某个特定的数据库下,那么在过程名前面加数据库名做前缀;
在定义过程时,使用DELIMITER $$ 命令将语句的结束符号从分号 ; 临时改为两个$$,使得过程体中使用的分号被直接传递到服务器,而不会被客户端(如mysql)解释。
二、存储过程的参数
存储过程可以有0个或多个参数,用于存储过程的定义。
3种参数类型:
IN输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
OUT输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
INOUT输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)
1、in输入参数
mysql》 delimiter $$
mysql》 create procedure in_param(in p_in int) -》 begin -》 select p_in; -》 set p_in=2; -》 select P_in; -》 end$$
mysql》 delimiter ;
mysql》 set @p_in=1;
mysql》 call in_param(@p_in);+------+
| p_in |
+------+
| 1 |
+------+
+------+
| P_in |
+------+
| 2 |
+------+mysql》 select @p_in;+-------+
| @p_in |
+-------+
| 1 |
+-------+#以上可以看出,p_in在存储过程中被修改,但并不影响@p_id的值,因为前者为局部变量、后者为全局变量。
2、out输出参数
mysql》 delimiter //mysql》 create procedure out_param(out p_out int) -》 begin -》 select p_out; -》 set p_out=2; -》 select p_out; -》 end -》 //mysql》 delimiter ;
mysql》 set @p_out=1;
mysql》 call out_param(@p_out);+-------+
| p_out |
+-------+
| NULL |
+-------+#因为out是向调用者输出参数,不接收输入的参数,所以存储过程里的p_out为null+-------+
| p_out |
+-------+
| 2 |
+-------+mysql》 select @p_out;+--------+
| @p_out |
+--------+
| 2 |
+--------+#调用了out_param存储过程,输出参数,改变了p_out变量的值3、inout输入参数
mysql》 delimiter $$
mysql》 create procedure inout_param(inout p_inout int) -》 begin -》 select p_inout; -》 set p_inout=2; -》 select p_inout; -》 end -》 $$
mysql》 delimiter ;
mysql》 set @p_inout=1;
mysql》 call inout_param(@p_inout);+---------+
| p_inout |
+---------+
| 1 |
+---------+
+---------+
| p_inout |
+---------+
| 2 |
+---------+mysql》 select @p_inout;+----------+
| @p_inout |
+----------+
| 2 |
+----------+#调用了inout_param存储过程,接受了输入的参数,也输出参数,改变了变量
注意:
①如果过程没有参数,也必须在过程名后面写上小括号
例:CREATE PROCEDURE sp_name () ??
②确保参数的名字不等于列的名字,否则在过程体中,参数名被当做列名来处理
强烈建议:
》输入值使用in参数;
》返回值使用out参数;
》inout参数就尽量的少用。
MySQL数据库新特性之存储过程入门教程
在MYSQL 中 终于引入了存储过程这一新特性 这将大大增强MYSQL 的数据库处理能力 在本文中 将指导读者快速掌握MYSQL 的存储过程的基本知识 带领用户入门
存储过程介绍
存储过程是一组为了完成特定功能的SQL语句集 经编译后存储在数据库中 用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它 存储过程可由应用程序通过一个调用来执行 而且允许用户声明变量 同时 存储过程可以接收和输出参数 返回执行存储过程的状态值 也可以嵌套调用
存储过程的优点
作为存储过程 有以下这些优点
( )减少网络通信量 调用一个行数不多的存储过程与直接调用SQL语句的网络通信量可能不会有很大的差别 可是如果存储过程包含上百行SQL语句 那么其性能绝对比一条一条的调用SQL语句要高得多
( )执行速度更快 存储过程创建的时候 数据库已经对其进行了一次解析和优化 其次 存储过程一旦执行 在内存中就会保留一份这个存储过程 这样下次再执行同样的存储过程时 可以从内存中直接中读取
( )更强的安全性 存储过程是通过向用户授予权限(而不是基于表) 它们可以提供对特定数据的访问 提高代码安全 比如防止 SQL注入
( ) 业务逻辑可以封装存储过程中 这样不仅容易维护 而且执行效率也高
当然存储过程也有一些缺点 比如
可移植性方面 当从一种数据库迁移到另外一种数据库时 不少的存储过程的编写要进行部分修改
存储过程需要花费一定的学习时间去学习 比如学习其语法等
在MYSQL中 推荐使用MYSQL Query Browswer()这个工具去进行存储过程的开发和管理 下面分步骤来学习MYSQL中的存储过程
定义存储过程的结束符
在存储过程中 通常要输入很多SQL语句 而SQL语句中每个语句以分号来结束 因此要告诉存储过程 什么位置是意味着整个存储过程结束 所以我们在编写存储过程前 先定义分隔符 我们这里定义 // 为分隔符 我们使用DELIMITER //这样的语法 就可以定义结束符了 当然你可以自己定义其他喜欢的符号
如何创建存储过程
下面先看下一个简单的例子 代码如下
DELIMITER //CREATEPROCEDURE `p ` ()LANGUAGE SQLDETERMINISTICSQL SECURITY DEFINERMENT A procedure BEGINSELECT Hello World ! ;END//
下面讲解下存储过程的组成部分
)首先在定义好终结符后 使用CREATE PROCEDURE+存储过程名的方法创建存储过程 LANGUAGE选项指定了使用的语言 这里默认是使用SQL
)DETERMINISTIC关键词的作用是 当确定每次的存储过程的输入和输出都是相同的内容时 可以使用该关键词 否则默认为NOT DETERMINISTIC
) SQL SECURITY关键词 是表示调用时检查用户的权限 当值为INVOKER时 表示是用户调用该存储过程时检查 默认为DEFINER 即创建存储过程时检查
) MENT部分是存储过程的注释说明部分
lishixinzhi/Article/program/MySQL/201404/30557
更多文章:
misunderstand用法(understand的反义词)
2025年12月9日 00:45
excel中四舍五入取整数(如何在excel表格中进行四舍五入取整呢)
2026年2月7日 19:00
ueditor表格默认属性修改(百度编辑器 Ueditor 初始内容默认 怎么做)
2026年8月21日 04:00
grouplayout布局详解(在java中GroupLayout这个布局管理器的中文名叫什么绝对布局又应该怎么设置)
2026年7月29日 22:30
linux图形化分区工具(请教Linux下图形化管理磁盘工具)
2025年12月2日 19:15
易语言写辅助容易被检测(易语言开发的软件都会被360提示为木马吗你怎么看)
2026年4月28日 12:30
社交英语communicate(communicate 这个英语怎么读)
2026年1月31日 10:30
dockerattach卡住(docker exec 和 docker attach的区别)
2026年2月15日 03:30
borderradius是什么标签(border-radius是css3新增属性吗)
2025年12月16日 23:15
android车载app开发(Android车载应用开发与分析(2) - 集成第三方APK)
2025年12月17日 22:00










