thinkphp mysql存储过程一些记录

所有带有mysql>的是指在mysql命令行下运行

查看当前数据库有哪些存储过程

mysql>show procedure status where Db='数据库名';
我本地运行后

thinkphp mysql存储过程一些记录

删除某个存储过程

drop procedure 存储过程名称;

创建存储过程

DELIMITER //
CREATE PROCEDURE  存储过程名 (参数列表)
BEGIN
    SQL语句代码块
END;
网上提供的代码中,最底部还有一个delimiter;作结束,但我这运行会出错,便在上面去掉了,下面有一段说明,。

其中参数列表形式如下
(参数一 参数名称 参数类型)
参数一包含:IN|OUT|INOUT三个选项,in表示输入参数,out表示输出参数,inout表示既可以输入也可以输出;默认的参数一一是in参数。
参数类型:该类型可以是MYSQL数据库中的任意类型。
  • DELIMITER // 语句的作用是将MYSQL的结束符设置为//,因为MYSQL默认的语句结束符为分号; ,存储过程中的SQL语句需要分号来结束,为了避免与存储过程中SQL语句结束符相冲突,需要使用DELIMITER 改变存储过程的结束符,并以"END //"结束存储过程。存储过程定义完毕之后再使用DELIMITER ;恢复默认结束符。DELIMITER 也可以指定其他符号为结束符。注意:当使用DELIMITER命令时,应该避免使用反斜杠(\)字符,因为反斜杠是MYSQL的转义字符!!!
  • DELIMITER 是分割符的意思,其实就是定义了一个语句执行的结束符,类似函数or存储过程这样的create语句由于其中包含了很多的";",而默认MySQL的结束符就是";",那么当我们创建的时候就会报错,有了DELIMITER 就可以告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。 

创建一个简单的存储过程例子

DELIMITER //
CREATE PROCEDURE pr_arcatt()
BEGIN
	SELECT * FROM dede_arcatt;
END;

thinkphp文件中使用的语句【调用存储过程】

$sql = "call pr_arcatt()";
$data = $db -> query($sql);

前台执行后

可能看到成功运行存储过程中的语句
thinkphp mysql存储过程一些记录

创建一个带参数的存储过程
DELIMITER //
CREATE PROCEDURE pr_area(in bn int)
BEGIN
	SELECT * FROM dede_area where id>bn ;
END;

thinkphp文件中使用的语句【调用存储过程】

$sql = "call pr_area(3110)";
$data = $db -> query($sql);

前台显示结果

thinkphp mysql存储过程一些记录


评论

大侠名号:   验证暗号: 点击我更换图片

修远兮

在这里记录每一点自己需要的知识

添加创始人微信,一起交流心得

推荐文章RECOMMEND