MariaDB社区

标题: mysql5 存储过程运行期间是否会根据实际情况部分重编译 [打印本页]

作者: caramon    时间: 2007-11-12 20:01
标题: mysql5 存储过程运行期间是否会根据实际情况部分重编译
不好意思,我是个新手,有个问题麻烦大家
经常在网上看到一些关于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 编辑 ]
作者: kider    时间: 2007-11-12 21:41
本人惯性感觉是整个被重新编译了。

drekey快来谈谈你的看法呀...




欢迎光临 MariaDB社区 (http://123.56.88.72/) Powered by Discuz! X3.2