Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Ograniczniki w MySQL

Ograniczniki inne niż domyślne ; są zwykle używane podczas definiowania funkcji, procedur składowanych i wyzwalaczy, w których należy zdefiniować wiele instrukcji. Definiujesz inny ogranicznik, np. $$ która jest używana do zdefiniowania końca całej procedury, ale wewnątrz niej poszczególne instrukcje są zakończone przez ; . W ten sposób, gdy kod jest uruchamiany w mysql klienta, klient może powiedzieć, gdzie kończy się cała procedura i wykonać ją jako jednostkę, zamiast wykonywać poszczególne instrukcje wewnątrz.

Zwróć uwagę, że DELIMITER słowo kluczowe jest funkcją wiersza poleceń mysql klienta (i niektórych innych klientów), a nie zwykłą funkcję języka MySQL. Nie zadziała, jeśli spróbujesz przekazać go przez API języka programowania do MySQL. Niektórzy inni klienci, tacy jak PHPMyAdmin, mają inne metody określania ogranicznika innego niż domyślny.

Przykład:

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 ;

Próba użycia DELIMITER z klientem, który go nie obsługuje, spowoduje wysłanie go na serwer, który zgłosi błąd składni. Na przykład używając PHP i MySQLi:

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

Błędy z:

Masz błąd w składni SQL; sprawdź instrukcję, która odpowiada Twojej wersji serwera MySQL, aby znaleźć właściwą składnię w pobliżu „DELIMITER $$” w wierszu 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. BŁĄD 1698 (28000):Odmowa dostępu dla użytkownika „root”@„localhost”

  2. Wiele instrukcji select w pojedynczym zapytaniu

  3. Czy w MySQL można mieć widok indeksowany?

  4. Jak włączyć operatora konkatenacji potoków w MySQL?

  5. Prześlij na varchar