sql >> Databasteknik >  >> RDS >> Mysql

Använder välj till lokal variabel och förberedd uttalande i mysql

Från http://bugs.mysql.com/bug.php?id=15263 :

Så vi kan inte göra:

PREPARE stmt FROM 'SELECT id INTO ? FROM t1';

Vi kan inte använda ? istället för identifierare (variabelnamn).

Och när du använder parameternamn:

PREPARE stmt FROM 'SELECT id INTO rid FROM t1';

i strängen som förbereds, då vet servern helt enkelt inte vad den rid hänvisar till i uttalandet du försöker förbereda. Du kan försöka förbereda det utanför SP med samma resultat:

mysql> prepare stmt from 'select id into p from t1';
ERROR 1327 (42000): Undeclared variable: p

Så jag använde bara användarvariabel, se nedan:

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. Hur man får aktuellt datum och tid (utan tidszon) i PostgreSQL

  2. Javascript-datum till sql-datumobjekt

  3. Mac + virtualenv + pip + postgresql =Fel:pg_config körbar fil hittades inte

  4. MySQL kundvagnsstruktur