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

Dấu phân cách trong MySQL

Dấu phân cách khác với ; mặc định thường được sử dụng khi xác định hàm, thủ tục được lưu trữ và trình kích hoạt trong đó bạn phải xác định nhiều câu lệnh. Bạn xác định một dấu phân tách khác như $$ được sử dụng để xác định phần cuối của toàn bộ thủ tục, nhưng bên trong nó, các câu lệnh riêng lẻ được kết thúc bằng ; . Bằng cách đó, khi mã được chạy trong mysql máy khách, máy khách có thể cho biết toàn bộ thủ tục kết thúc ở đâu và thực thi nó như một đơn vị thay vì thực thi các câu lệnh riêng lẻ bên trong.

Lưu ý rằng DELIMITER từ khóa là một chức năng của dòng lệnh mysql chỉ ứng dụng khách (và một số ứng dụng khách khác) và không phải là tính năng ngôn ngữ MySQL thông thường. Nó sẽ không hoạt động nếu bạn cố gắng chuyển nó qua một API ngôn ngữ lập trình đến MySQL. Một số ứng dụng khách khác như PHPMyAdmin có các phương thức khác để chỉ định dấu phân cách không mặc định.

Ví dụ:

DELIMITER $$
/* This is a complete statement, not part of the procedure, so use the custom delimiter $$ */
DROP PROCEDURE my_procedure$$

/* Now start the procedure code */
CREATE PROCEDURE my_procedure ()
BEGIN    
  /* Inside the procedure, individual statements terminate with ; */
  CREATE TABLE tablea (
     col1 INT,
     col2 INT
  );

  INSERT INTO tablea
    SELECT * FROM table1;

  CREATE TABLE tableb (
     col1 INT,
     col2 INT
  );
  INSERT INTO tableb
    SELECT * FROM table2;
  
/* whole procedure ends with the custom delimiter */
END$$

/* Finally, reset the delimiter to the default ; */
DELIMITER ;

Đang cố gắng sử dụng DELIMITER với một ứng dụng khách không hỗ trợ nó sẽ khiến nó được gửi đến máy chủ, điều này sẽ báo lỗi cú pháp. Ví dụ:sử dụng PHP và MySQLi:

$mysqli = new mysqli('localhost', 'user', 'pass', 'test');
$result = $mysqli->query('DELIMITER $$');
echo $mysqli->error;

Lỗi với:

Bạn có lỗi trong cú pháp SQL của mình; kiểm tra hướng dẫn sử dụng tương ứng với phiên bản máy chủ MySQL của bạn để biết cú pháp phù hợp để sử dụng gần 'DELIMITER $$' tại dòng 1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thêm ràng buộc mặc định trong MySQL

  2. Đạt được thứ bậc, Mối quan hệ cha mẹ / con cái một cách hiệu quả và dễ dàng

  3. Mã lỗi:1215. Không thể thêm ràng buộc khóa ngoại (khóa ngoại)

  4. Cách xác định một thứ tự ORDER BY tùy chỉnh trong mySQL

  5. Giá trị múi giờ máy chủ 'AEST' không được công nhận hoặc đại diện cho nhiều hơn một múi giờ