sql >> Databáze >  >> RDS >> Mysql

Uložené procedury pomocí MySQL Workbench

Při použití vestavěného editoru procedur přidává MySQL Workbench několik dalších příkazů:

USE `test`; // <----------
DROP procedure IF EXISTS `p2`;  // <----------

DELIMITER $$
USE `test`$$ // <----------
CREATE PROCEDURE test.`p2` ()
LANGUAGE SQL
DETERMINISTIC
COMMENT 'Adds "nson" to first and last names in the record.'
BEGIN
SELECT 'Hello World';
END $$

DELIMITER ; // <----------

Tyto příkazy přímo nesouvisí se syntaxí uložených procedur, jsou pouze komoditou – ostatní klienti MySQL (jako HeidiSQL nebo oficiální nástroj příkazového řádku) je nepřidají. Poslední změnou oddělovače je pravděpodobně reset, aby se předešlo problémům v budoucích výpisech na stejném připojení.

Chcete-li klienta informovat o tom, kde začíná a končí kód procedury, musíte změnit oddělovač. Problém je v tom, že tělo procedury je obvykle sbírka příkazů SQL, takže pokud vynecháte změnu oddělovače, bude si MySQL myslet, že se pokoušíte spustit řadu příkazů, z nichž první by byl tento:

CREATE PROCEDURE test.`p2` ()
LANGUAGE SQL
DETERMINISTIC
COMMENT 'Adds "nson" to first and last names in the record.'
BEGIN
SELECT 'Hello World';

S DELIMITER $$ říkáte MySQL, že váš úplný příkaz pochází z CREATE do END . Je to jen syntaktický cukr:DELIMITER není ani klíčové slovo SQL. HeidiSQL například poskytuje GUI s textovým polem, kam zapisujete tělo procedury, takže nepotřebujete řešení DELIMITER.




  1. Skupiny dostupnosti SQL Server AlwaysOn:Instalace a konfigurace, část 1

  2. 4 způsoby, jak získat třídění databází v MariaDB

  3. Vložit dotaz pro vložení řádků v MySQL

  4. Mysql Jak vytvoříte seskupený index?