Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lỗi cú pháp MySQL

Khối mã của bạn không xác định phạm vi cho các biến đã khai báo. Nếu trong một quy trình, chúng phải nằm trong khoảng BEGINEND . Nếu không có chúng, câu lệnh DECLARE varLocalityName VARCHAR(50); trở thành một câu lệnh không hợp lệ được thực thi. Câu lệnh này tương đương với các câu lệnh được hiển thị bên dưới:

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>

Hoặc bạn nên khai báo các biến phiên không có từ khóa DECLARE hoặc tuân theo cú pháp được xác định cho một thủ tục được lưu trữ để sử dụng các biến phạm vi.

Ví dụ 1 :Sử dụng các biến phiên:

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)

Lưu ý rằng bạn có thể đặt / xác định các biến phiên trong một thủ tục nhưng không phải DECLARE .

Ví dụ 2 :Sử dụng các biến phạm vi thủ tục:

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>

Ngoài ra, hãy tham khảo Phạm vi và khai báo biến .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giữ lại các giá trị trường sau khi gửi

  2. MySQL làm cách nào để không bao gồm các hàng trùng lặp khi tôi sử dụng SUM và COUNT với nhiều INNER JOINS?

  3. Django. Mô hình proxy với tập hợp trường giới hạn

  4. Kết nối với Cơ sở dữ liệu MySQL bằng Ứng dụng iOS của tôi

  5. Sự khác biệt giữa MySQL, MySQLi và PDO là gì?