分号在过程中的mysql中的“begin ... end block”中不起作用

时间:2016-03-16 05:59:31

标签: mysql

我已经看到了一些关于此的答案。但那些无法解决我的问题

DROP PROCEDURE IF EXISTS test_while_loop; 

Delimeter // 

CREATE PROCEDURE test_while_loop()
  BEGIN
    SELECT COUNT(*) INTO count_ FROM job_applicant;

  END 
// 


Delimeter;

但显示意外附近';'

3 个答案:

答案 0 :(得分:0)

在您的程序中,您忘了DECLARE count_ variable。在您的问题将解决的程序中添加吹线

DECLARE count_ INT DEFAULT 0; 

试试这个。

DROP PROCEDURE IF EXISTS test_while_loop; 

DELIMITER // 

CREATE PROCEDURE test_while_loop()
  BEGIN
    DECLARE count_ INT DEFAULT 0;
    SELECT COUNT(*) INTO count_ FROM job_applicant;    
  END //     
DELIMITER ;

正确的关键字是DELIMITER,而不是Delimeter

答案 1 :(得分:-1)

问题在于你的最后一行。

Delimiter;

应该是

Delimiter ;

(请注意空格。另请注意拼写:它是DELIMITER,而不是DELIMETER。)

一旦修复,你还需要声明变量count_,正如Vipin Jain指出的那样。完整的代码应该是

DROP PROCEDURE IF EXISTS test_while_loop; 

DELIMITER // 

CREATE PROCEDURE test_while_loop()
  BEGIN
    DECLARE count_ INT DEFAULT 0;
    SELECT COUNT(*)
      INTO count_
      FROM job_applicant;    
  END //     
DELIMITER ;

(像我一样打破 SELECT 完全取决于个人偏好。)

答案 2 :(得分:-1)

你需要下定决心。您已指定DELIMITER //,但仍在使用;。当然它会产生语法错误。这是不对的。使用//(或根本不更改分隔符)。如果分隔符已更改为//,则无法在过程正文中使用;

注意最后一行Delimeter;

  • 是拼错
  • 缺少内部空间。