Mysql
 sql >> база данни >  >> RDS >> Mysql

Използване на select в локална променлива и подготвен оператор в mysql

От http://bugs.mysql.com/bug.php?id=15263 :

Така че, не можем да направим:

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$$


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Пропускайте редове за грешки, докато зареждате данни в mysql таблица от файл с разделители

  2. Mysql AVG да игнорира нула

  3. PHP/SQL база данни за запитване за добри практики и сигурност

  4. MySQL как да попълним липсващи дати в диапазона?

  5. Актуализиране на множество колони на MySQL таблица с помощта на масиви с PDO