http://bugs.mysql.com/bug.php?id=15263<から/ a> :
したがって、私たちはできません:
PREPARE stmt FROM 'SELECT id INTO ? FROM t1';
?
は使用できません 識別子(変数名)の代わりに。
また、パラメータ名を使用する場合:
PREPARE stmt FROM 'SELECT id INTO rid FROM t1';
準備中の文字列では、サーバーは単にそのrid
が何であるかを知りません。 準備しようとしているステートメントで参照します。 SPの外部で準備して同じ結果を得ることができます:
mysql> prepare stmt from 'select id into p from t1';
ERROR 1327 (42000): Undeclared variable: p
だから私はユーザー変数を使用しました。以下を参照してください:
DROP PROCEDURE IF EXISTS `singledb`.`TOUR_TRANSFER`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `TOUR_TRANSFER`()
BEGIN
BEGIN -- for rubric table
-- DECLARE @tblRubric_rubric_id INT;
SET @tblRubric_rubric_id := 0;
SET @qry = 'SELECT count(*) into @tblRubric_rubric_id FROM zerodb2.tour_template';
PREPARE statement FROM @qry;
EXECUTE statement;
END;
END$$