mysql 存储过程的问题

Nancy_5221

Nancy_5221

2016-02-19 09:48

关注图老师设计创意栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享mysql 存储过程的问题教程,希望对大家能有一点小小的帮助。
一开始用phpMyAdmin来执行,后来出现一堆错误,后来去掉了begin,end之后可以正常执行,但要执行存储过程,在phpMyAdmn中不行,而在mysql命令行文本框中就可以。
接下来又遇到更难的问题,在存储过程中加入预处理语句,更不行了,在mysql命令行文本框下执行同样,下面的运行记录,给大家参考,能否有高手来帮助。
代码如下:

mysql CREATE PROCEDURE catalog_get_products_in_category(
- IN inCategoryId INT, IN inShortProductDescriptionLength INT,
- IN inProductsPerPage INT, IN inStartItem INT)
- begin
- SELECT p.product_id, p.name,IF(LENGTH(p.description) = inShortProductD
escriptionLength, p.description,
- CONCAT(LEFT(p.description, inShortProductDescriptionLength),'...')) AS
description, p.price, p.discounted_price, p.thumbnail
- FROM product p INNER JOIN product_category pc ON p.product_id = pc.pro
duct_id
- WHERE pc.category_id = inCategoryId
- ORDER BY p.display DESC
- LIMIT inStartItem;inProductsPerPage;
- end$$
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'inSta
rtItem;inProductsPerPage;
end' at line 10

//原本的存储过程语句
EATE PROCEDURE catalog_get_products_in_category(
IN inCategoryId INT, IN inShortProductDescriptionLength INT,
IN inProductsPerPage INT, IN inStartItem INT)
BEGIN
PREPARE statement FROM
"SELECT p.product_id, p.name,IF(LENGTH(p.description) = ?, p.description,
CONCAT(LEFT(p.description, ?),'...')) AS description, p.price, p.discounted_price, p.thumbnail
FROM product p INNER JOIN product_category pc ON p.product_id = pc.product_id
WHERE pc.category_id = ?
ORDER BY p.display DESC
LIMIT ?, ?";
SET @p1 = inShortProductDescriptionLength;
SET @p2 = inShortProductDescriptionLength;
SET @p3 = inCategoryId;
SET @p4 = inStartItem;
SET @p5 = inProductsPerPage;
EXECUTE statement USING @p1, @p2, @p3, @p4, @p5;
END$$

mysql delimiter $$
mysql CREATE PROCEDURE catalog_get_products_in_category(
- IN inCategoryId INT, IN inShortProductDescriptionLength INT,
- IN inProductsPerPage INT, IN inStartItem INT)
- BEGIN
- PREPARE statement FROM
- "SELECT p.product_id, p.name,IF(LENGTH(p.description) = ?, p.descript
ion,
" CONCAT(LEFT(p.description, ?),'...')) AS description, p.price, p.disco
unted_price, p.thumbnail
" FROM product p INNER JOIN product_category pc ON p.product_id = pc.pro
duct_id
" WHERE pc.category_id = ?
" ORDER BY p.display DESC
" LIMIT ?, ?";
- SET @p1 = inShortProductDescriptionLength;
- SET @p2 = inShortProductDescriptionLength;
- SET @p3 = inCategoryId;
- SET @p4 = inStartItem;
- SET @p5 = inProductsPerPage;
- EXECUTE statement USING @p1, @p2, @p3, @p4, @p5;
- END$$
ERROR 1314 (0A000): PREPARE is not allowed in stored procedures

上面有两个存储过程,一个不用预处理语句,一个用了预处理语句,
之后,向作者发过邮件,没有答复,又给mysql官方发过邮件,同样没答复。现今只能求助诸位高人。
展开更多 50%)
分享

猜你喜欢

mysql 存储过程的问题

编程语言 网络编程
mysql 存储过程的问题

MySQL 存储过程的字符集问题

编程语言 网络编程
MySQL 存储过程的字符集问题

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

mysql 教程 存储过程

编程语言 网络编程
mysql 教程 存储过程

mysql 动态执行存储过程语句

编程语言 网络编程
mysql 动态执行存储过程语句

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

mysql 树形结构查询(存储过程)

编程语言 网络编程
mysql 树形结构查询(存储过程)

MySQL5创建存储过程的示例

编程语言 网络编程
MySQL5创建存储过程的示例

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

轻松一招合上笔记本 不再总待机或休眠状态

轻松一招合上笔记本 不再总待机或休眠状态

基于Java回顾之I/O的使用详解

基于Java回顾之I/O的使用详解
下拉加载更多内容 ↓