Stored Procedures Using MySQL Workbench

前端 未结 1 1945

Very new to the environment, I have a question about a line that\'s added to the end of my code. The guide I\'m following is:

http://net.tutsplus.com/tutorials/an-in

相关标签:
1条回答
  • 2020-12-21 01:05

    When using the builtin procedure editor, MySQL Workbench adds a few extra commands:

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

    Those commands are not strictly related to the stored procedures syntax, they're merely a commodity—other MySQL clients (such as HeidiSQL or the official command line utility) will not add them. The last delimiter change is probably a reset to avoid problems in future statements on the same connection.

    You need to change the delimiter in order to instruct the client about where the procedure code starts and end. The problem is that the procedure body is normally a collection of SQL statements so omitting the delimiter change would make MySQL think that you are attempting to run a series of statements, the first of which would be this:

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

    With DELIMITER $$ you are telling MySQL that your full statement goes from CREATE to END. It's just syntactic sugar: DELIMITER is not even a SQL keyword. HeidiSQL, for instance, provides a GUI with a text box where you write the procedure body, thus you don't need the DELIMITER workaround.

    0 讨论(0)
提交回复
热议问题