sql >> Database teknologi >  >> RDS >> Mysql

Brug af vælg i lokal variabel og forberedt erklæring i mysql

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

Så vi kan ikke gøre:

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

Vi kan ikke bruge ? i stedet for identifikator (variabelnavn).

Og når du bruger parameternavn:

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

i strengen, der forberedes, så ved serveren simpelthen ikke, hvad der rid henviser til i erklæringen, du forsøger at forberede. Du kan prøve at forberede det uden for SP med samme resultat:

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

Så jeg brugte bare brugervariabel, se nedenfor:

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. PSQL kommandolinjeargumenter i DO-script

  2. Automatisering af sikkerhedsrevisioner til PostgreSQL

  3. hvordan man undslipper skilletegnet fra kolonneindholdet ved eksport af csv

  4. PL/SQL:hvordan beder jeg brugerinput i en procedure?