Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Użycie select do zmiennej lokalnej i przygotowanej instrukcji w mysql

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

Więc nie możemy zrobić:

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

Nie możemy użyć ? zamiast identyfikatora (nazwa zmiennej).

A kiedy używasz nazwy parametru:

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

w przygotowywanym ciągu, serwer po prostu nie wie, co to rid odnosi się do oświadczenia, które próbujesz przygotować. Możesz spróbować przygotować go poza SP z takim samym skutkiem:

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

Więc właśnie użyłem zmiennej użytkownika, patrz poniżej:

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. Jak przechowywać relacje dwukierunkowe w RDBMS, takim jak MySQL?

  2. Znajdowanie miast w promieniu „X” kilometrów (lub mil)

  3. Wstaw wartość NULL do kolumny INT

  4. Jak w PHP z PDO sprawdzić końcowe, sparametryzowane zapytanie SQL?

  5. WYBIERZ wiersz według DATEPART()