Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menggunakan pilih ke dalam variabel lokal dan pernyataan yang disiapkan di mysql

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

Jadi, kita tidak bisa melakukan:

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

Kami tidak dapat menggunakan ? bukannya pengenal (nama variabel).

Dan ketika Anda menggunakan nama parameter:

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

dalam string yang sedang disiapkan, maka server tidak tahu apa yang rid mengacu pada pernyataan yang Anda coba persiapkan. Anda dapat mencoba menyiapkannya di luar SP dengan hasil yang sama:

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

Jadi saya hanya menggunakan variabel pengguna, lihat di bawah ini:

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. SQL:Bagaimana saya bisa memperbarui nilai pada kolom hanya jika nilai itu nol?

  2. MySQL - Tidak Dapat Membuat Tampilan dengan variabel SET di dalamnya

  3. Setiap tabel turunan harus memiliki kesalahan alias sendiri

  4. Cara mengunci baris untuk dipilih di MySQL

  5. Bagaimana modul mysql yang dijanjikan bekerja dengan NodeJS?