目录

前言:...

正文:

概述

特点

基本语法

创建

调用

查看

删除

关键字delimiter解决命令行存储过程技术使用的错误


前言:...

在MySQL的使用时,可能会触及到经常使用一些特定SQL语句组合来调用MySQL中的一些数据,而经常使用一模一样的SQL调用语句会感到繁琐,这个时候MySQL就提供了存储过程技术简化调用过程,不过存储过程技术在命令行中的使用要注意结束符的影响,这个时候还需要使用到关键字delimiter。

正文:

概述

存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。

存储过程思想上很简单,就是数据库SQL语言层面的代码封装与重用。

特点

  • 封装,复用

可以接收参数,也可以返回数据,减少网络交互,效率提升

基本语法

创建

CREATE PROCEDURE 存储过程名称 ([参数列表])  -- 参数可有可无的
BEGIN
     -- SQL语句
END;
-- eg:
create procedure p1()
begin
select * from student;
end;

调用

CALL 名称 ([参数]);
-- eg:
call p1();

查看

-- 查询指定数据库的存储过程及状态信息(xxx是数据库名)
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = 'xxx';
-- 查询某个存储过程的定义
SHOW CREATE PROCEDURE存储过程名称;
-- eg:
select * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = 'ith';
show create procedure p1;

删除

DROP PROCEDURE [IF EXISTS] 存储过程名称;
-- eg:
drop procedure if exists p1;

关键字delimiter解决命令行存储过程技术使用的错误

  • 在命令行中,执行创建存储过程的SQL时,需要通过关键字delimiter指定SQL语句的结束符。

java 调用存储过程可以添加事务吗 调用存储过程的关键字_mysql

原因是因为在命令行执行存储过程语句时,会直接在第一个;处结束,而要实现存储过程要在end后面;处结束,所以要用到delimiter指定SQL语句的结束符

使用关键字delimiter如下

java 调用存储过程可以添加事务吗 调用存储过程的关键字_SQL_02