mysql 存储过程 调用问题

yvince 2011-12-29 04:36:25
同样一个存储过程在windows环境下通过SQLyog调试可以正常运行,但是在linux下同样用SQLyog远程登录运行就出现如下错误:

Error Code : 1243
Unknown prepared statement handler (stmt) given to EXECUTE

系统环境配置:
linux radhat5.5
mysql5.6.2-m5-log

存储过程源码如下:
/*Stored Proc: con_record*/
---------------------------

Create Procedure:
-----------------

CREATE DEFINER=`site`@`localhost` PROCEDURE `con_record`(IN count int(6),
IN recordtime varchar(20),
IN bic varchar(12))
BEGIN
SET @counts = count;
SET @sql = 'select result.agencyBIC as agencybic,';
SET @i = 0;
WHILE @i < @counts
DO
SET @sql = CONCAT(@sql, 'format(sum(result.rtime');
SET @sql = CONCAT(@sql, @i + 1);
SET @sql = CONCAT(@sql, '),0) as time');
SET @sql = CONCAT(@sql, @i + 1);
IF @i != (@counts - 1)
THEN
SET @sql = CONCAT(@sql, ",");
END IF;
SET @i = @i + 1;
END WHILE;
SET @sql = CONCAT(@sql, ' from (select agencyBIC,record_time,');
SET @j = 0;
WHILE @j < @counts
DO
SET @sql = CONCAT(@sql,' CASE HOUR(record_time) WHEN ');
SET @sql = CONCAT(@sql,@j*2);
SET @sql = CONCAT(@sql,' THEN connect ELSE 0 END as rtime');
SET @sql = CONCAT(@sql,@j+1);

IF @j != (@counts - 1)
THEN
SET @sql = CONCAT(@sql, ',');
END IF;
SET @j = @j + 1;
END WHILE;
SET @sql = CONCAT(@sql,' FROM connect_record t where record_time like ? ');
IF LENGTH(bic) > 0
THEN
SET @sql = CONCAT(@sql,'and agencyBIC = ? ');
END IF;

SET @sql = CONCAT(@sql,' ) result group by agencyBIC');



IF LENGTH(recordtime) = 0
THEN
SET @r_time = CONCAT(SUBSTRING(now(),1,10),'%');
ELSE
SET @r_time = CONCAT(SUBSTRING(recordtime,1,10),'%');
END IF;
IF LENGTH(bic) > 0
THEN
EXECUTE stmt USING @r_time,@agencybic;
ELSE
EXECUTE stmt USING @r_time;
END IF;
END

sql_mode:
---------

NO_AUTO_VALUE_ON_ZERO
...全文
63 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yvince 2011-12-29
  • 打赏
  • 举报
回复
真是无语了,我在用mysqldump命令进行导出的时候
/**执行预定义语句**/
PREPARE stmt FROM @SQL;
SET @agencybic = bic;
这段代码竟然给我删掉了,可能是中文注释的问题。
很气愤、拜拜浪费了大把的时间。
yvince 2011-12-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wwwwa 的回复:]
在EXECUTE 前要PREPARE
PREPARE stmt FROM @SQL;
EXECUTE stmt;
[/Quote]
恩 我也看到这个问题了 可能是导出的时候出了点问题 我在试试看 多谢
ACMAIN_CHM 2011-12-29
  • 打赏
  • 举报
回复
mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
mysql> SET @a = 3;
mysql> SET @b = 4;
mysql> EXECUTE stmt1 USING @a, @b;
+------------+
| hypotenuse |
+------------+
| 5 |
+------------+
mysql> DEALLOCATE PREPARE stmt1;

WWWWA 2011-12-29
  • 打赏
  • 举报
回复
在EXECUTE 前要PREPARE
PREPARE stmt FROM @SQL;
EXECUTE stmt;
本课程是SQL系列课程第2篇:MySQL数据库。MySQL篇    MySQL数据库管理系统安装        10.1 MySQL概述            10.1.1 MySQL主要特点            10.1.2 MySQL主要版本         10.2 MySQL数据库安装和配置            10.2.1 Windows平台安装MySQL                1.下载MySQL8.0社区版                2.安装MySQL8.0社区版            10.2.2 Linux平台安装MySQL                1.更新软件仓库包索引                2.安装 MySQL                3.防火墙设置                4.启动 MySQL 服务                5.配置远程登录            10.2.3 macOS平台安装MySQL                1.下载MySQL8.0社区版                2.安装 MySQL    MySQL数据库管理系统日常管理        11.1 登录服务器        11.2 常见的管理命令            11.2.1 帮助命令            11.2.2 退出命令            11.2.3 数据库管理            11.2.4 用户管理        11.3 查看系统对象信息            11.3.1 查看有哪些库            11.3.2 查看有哪些表            11.3.3 查看表结构        11.4 执行脚本文件            11.4.1 不需要登录MySQL方式            11.4.2 需要登录MySQL方式        11.5 数据库备份与恢复            11.5.1 备份数据库            11.5.2 恢复数据库            11.5.3 实例:在Windows下备份到Linux下恢复        11.6 MySQL图形界面管理工具            11.6.1 下载和安装MySQL Workbench            11.6.2 配置连接数据库            11.6.3 管理数据库            11.6.4 管理表            11.6.5 执行SQL语句    MySQL中特有的SQL语句        12.1 自增长字段        12.2 MySQL日期相关数据类型        12.3 限制返回行数        12.4 常用函数            12.4.1 数字型函数            12.4.2 字符串函数            12.4.3 日期和时间函数    MySQL数据库开发        13.1 存储过程            13.1.1 使用存储过程重构“找出所有销售部所有员工信息”案例            13.1.2 调用存储过程            13.1.3 删除储过程        13.2 存储过程参数            13.2.1 IN参数            13.2.2 OUT参数            13.2.3 INOUT参数        13.3 存储函数            13.3.1 创建存储函数            13.3.2 调用存储函数            13.3.3 删除存储函数        13.4 触发器            13.4.1 触发器分类            13.4.2 创建触发器语法            13.4.3 使用NEW和OLD修饰符            13.4.4 示例:员工表操作更新日志            13.4.5 测试触发器

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧