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

Procedury składowane przy użyciu MySQL Workbench

Podczas korzystania z wbudowanego edytora procedur MySQL Workbench dodaje kilka dodatkowych poleceń:

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 ; // <----------

Polecenia te nie są ściśle związane ze składnią procedur składowanych, są jedynie towarem — inni klienci MySQL (tacy jak HeidiSQL lub oficjalne narzędzie wiersza poleceń) ich nie dodadzą. Ostatnią zmianą ogranicznika jest prawdopodobnie zresetowanie, aby uniknąć problemów w przyszłych oświadczeniach dotyczących tego samego połączenia.

Musisz zmienić ogranicznik, aby poinstruować klienta, gdzie zaczyna się i kończy kod procedury. Problem polega na tym, że ciało procedury jest zwykle zbiorem instrukcji SQL, więc pominięcie zmiany ogranicznika sprawiłoby, że MySQL pomyślałby, że próbujesz uruchomić serię instrukcji, z których pierwsza będzie taka:

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

Z DELIMITER $$ mówisz MySQL, że twoje pełne oświadczenie pochodzi z CREATE do END . To tylko cukier składniowy:DELIMITER nie jest nawet słowem kluczowym SQL. Na przykład HeidiSQL zapewnia GUI z polem tekstowym, w którym piszesz treść procedury, dzięki czemu nie potrzebujesz obejścia DELIMITER.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. node.js połączenie mySQL przez singleton

  2. Jak wybrać odchylenie standardowe w rzędzie? (w SQL - lub R :)

  3. DATEDIFF() lub BETWEEN dla zakresów dat w zapytaniach SQL

  4. Nie mogę zainstalować mysql2 gem na macOS Sierra

  5. Kod błędu MySQL:1175 podczas aktualizacji (MySQL-Workbench a konsola)