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

Pembatas di MySQL

Pembatas selain ; default default biasanya digunakan saat mendefinisikan fungsi, prosedur tersimpan, dan pemicu di mana Anda harus mendefinisikan beberapa pernyataan. Anda menentukan pembatas yang berbeda seperti $$ yang digunakan untuk mendefinisikan akhir dari keseluruhan prosedur, tetapi di dalamnya, pernyataan individual masing-masing diakhiri oleh ; . Dengan begitu, ketika kode dijalankan di mysql klien, klien dapat mengetahui di mana seluruh prosedur berakhir dan mengeksekusinya sebagai satu unit daripada mengeksekusi pernyataan individu di dalamnya.

Perhatikan bahwa DELIMITER kata kunci adalah fungsi dari baris perintah mysql klien (dan beberapa klien lain) saja dan bukan fitur bahasa MySQL biasa. Ini tidak akan berfungsi jika Anda mencoba meneruskannya melalui API bahasa pemrograman ke MySQL. Beberapa klien lain seperti PHPMyAdmin memiliki metode lain untuk menentukan pembatas non-default.

Contoh:

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 ;

Mencoba menggunakan DELIMITER dengan klien yang tidak mendukungnya akan menyebabkannya dikirim ke server, yang akan melaporkan kesalahan sintaksis. Misalnya, menggunakan PHP dan MySQLi:

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

Kesalahan dengan:

Anda memiliki kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MySQL Anda untuk sintaks yang tepat untuk digunakan di dekat 'DELIMITER $$' pada baris 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. ScaleGrid DBaaS Memperluas Layanan Hosting MySQL Melalui AWS Cloud

  2. Menggunakan JDeveloper dengan Database MySQL dan Database Oracle di AWS RDS, Bagian 1

  3. Ambil Gambar yang disimpan sebagai BLOB pada MYSQL DB

  4. Memigrasikan Database Oracle ke MySQL di AWS, Bagian 1

  5. Beberapa kueri dieksekusi di java dalam satu pernyataan