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

Kesalahan Sintaks MySQL

Blok kode Anda tidak mendefinisikan ruang lingkup untuk variabel yang dideklarasikan. Jika dalam suatu prosedur, mereka harus berada di antara BEGIN dan END . Tanpa mereka, pernyataan DECLARE varLocalityName VARCHAR(50); menjadi pernyataan yang tidak valid untuk dieksekusi. Pernyataan ini setara dengan pernyataan yang ditunjukkan di bawah ini:

mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2012-10-22     |
+----------------+
1 row in set (0.00 sec)

mysql> declare varLocalityName varchar(50);
ERROR 1064 (42000): You have an error in your SQL syntax;
 check the manual that corresponds to your MySQL server version 
 for the right syntax to use near 'declare varLocalityName varchar(50)' at line 1
mysql>

Atau Anda harus menyatakan variabel sesi tanpa kata kunci DECLARE atau ikuti sintaks yang ditentukan untuk prosedur tersimpan untuk menggunakan variabel cakupan.

Contoh 1 :Menggunakan variabel sesi:

mysql> set @x = null;
Query OK, 0 rows affected (0.00 sec)
mysql> select @x;
+------+
| @x   |
+------+
| NULL |
+------+
1 row in set (0.00 sec)

mysql> delimiter $$
mysql> select current_date() into @x;
    -> $$
Query OK, 1 row affected (0.02 sec)

mysql> select @x;
    -> $$
+------------+
| @x         |
+------------+
| 2012-10-22 |
+------------+
1 row in set (0.00 sec)

Perhatikan bahwa Anda dapat mengatur/mendefinisikan variabel sesi dalam prosedur tetapi tidak DECLARE .

Contoh 2 :Menggunakan variabel lingkup prosedur:

mysql>
mysql> delimiter $$
mysql> create procedure some_x()
    ->    begin
    ->      declare varLocalityName varchar(50);
    ->
    ->      set @sessionDate = null;
    ->      select @sessionDate;
    ->      set @sessionDate = current_date();
    ->      select @sessionDate;
    ->
    ->      select varLocalityName;
    ->    end;
    -> $$
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;
mysql>
mysql> call some_x();
+--------------+
| @sessionDate |
+--------------+
| NULL         |
+--------------+
1 row in set (0.00 sec)

+--------------+
| @sessionDate |
+--------------+
| 2012-10-22   |
+--------------+
1 row in set (0.00 sec)

+-----------------+
| varLocalityName |
+-----------------+
| NULL            |
+-----------------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> select @sessionDate;
+--------------+
| @sessionDate |
+--------------+
| 2012-10-22   |
+--------------+
1 row in set (0.00 sec)

mysql> select varLocalityName;
ERROR 1054 (42S22): Unknown column 'varLocalityName' in 'field list'
mysql>

Lihat juga Deklarasi dan cakupan variabel .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memanggil Prosedur Tersimpan dalam Prosedur Tersimpan di MySQL

  2. berikan nilai dalam url href di php

  3. Menghapus baris berdasarkan nilai maks

  4. Tambahkan kolom di laravel

  5. Perintah PHP Tidak Sinkron kesalahan