Từ http://bugs.mysql.com/bug.php?id=15263 :
Vì vậy, chúng tôi không thể làm:
PREPARE stmt FROM 'SELECT id INTO ? FROM t1';
Chúng tôi không thể sử dụng ?
thay vì mã định danh (tên biến).
Và khi bạn sử dụng tên tham số:
PREPARE stmt FROM 'SELECT id INTO rid FROM t1';
trong chuỗi đang được chuẩn bị, khi đó máy chủ chỉ đơn giản là không biết cái gì rid
đề cập đến trong tuyên bố bạn đang cố gắng chuẩn bị. Bạn có thể thử chuẩn bị bên ngoài SP với kết quả tương tự:
mysql> prepare stmt from 'select id into p from t1';
ERROR 1327 (42000): Undeclared variable: p
Vì vậy, tôi vừa sử dụng biến người dùng, hãy xem bên dưới:
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$$