MariaDB社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3140|回复: 1
打印 上一主题 下一主题

mysql5 存储过程运行期间是否会根据实际情况部分重编译

[复制链接]
跳转到指定楼层
1#
发表于 2007-11-12 20:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不好意思,我是个新手,有个问题麻烦大家
经常在网上看到一些关于MYSQL5 存储过程内将表名做为参数传递进存储过程以提高存储过程灵活度的帖子,当然,其中也提到了,如果使用EXEC这类方法的时候很有可能会因为MYSQL每次调用存储过程都会将之重新编译而导致提高了灵活度而降低了运行效率的。
但是每篇文章都没有提及到底是这个存储过程都会被重新编译还是是说只是例如  PREPARE STMT FROM @m_sTempStr;
"EXECUTE   STMT"中双引号部分被重新编译。如果有知道的能否指点下,麻烦大家了
CREATE DEFINER=`root`@`localhost` PROCEDURE `mytest`(IN tablename TEXT,out p_sErrorMsg char(50))
BEGIN
DECLARE m_sTempStr char(200) default '';
DECLARE m_sTempId char(30) default '';
DECLARE EXIT HANDLER FOR NOT FOUND BEGIN  ROLLBACK; SET p_sErrorMsg = 'NOT FOUND'; END;
DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN   ROLLBACK; SET p_sErrorMsg = 'SQLEXCEPTION'; END;
DECLARE EXIT HANDLER FOR SQLWARNING BEGIN   ROLLBACK; SET p_sErrorMsg = 'SQLWARNING'; END;
START TRANSACTION;
SET @m_sTempStr = CONCAT("insert into ",tablename," values(1,1)");
PREPARE STMT FROM @m_sTempStr;
EXECUTE   STMT;
COMMIT;
END

[ 本帖最后由 caramon 于 2007-11-13 21:42 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
2#
发表于 2007-11-12 21:41:43 | 只看该作者
本人惯性感觉是整个被重新编译了。

drekey快来谈谈你的看法呀...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|MariaDB社区 ( 京ICP备07012489号    |
业务联系: QQ:48474881; 邮箱: 48474881@qq.com; 电话:13911732319
声明:本站部分文章是网友转载,若未经作者同意或署名有误,请联系网站管理员。

GMT+8, 2024-9-20 06:41 , Processed in 0.088694 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表