不能多次调用Mysql存储过程,存在于同一个sql文件中

时间:2016-08-28 03:24:41

标签: mysql stored-procedures

我的存储过程是

DELIMITER //
CREATE Add_Template(
        template_id_             VARCHAR(20),
        file_name_               VARCHAR(100),
        template_description_    VARCHAR(500))
BEGIN
    INSERT INTO application_template_tab VALUES(template_id_,file_name_,template_description_);
END//

我将此过程称为相同的.sql文件

call Add_Template('ICT','frmIct.jsp','Information Communication Technology');
call Add_Template('Bac_Bus_Adm','frmBusAdm.jsp','Bachelor of Business Administration');
  1. 将这些过程调用放在一个单独的文件中并在执行存储过程后执行它也可以正常工作。
  2. 存储过程后只有一个调用也可以正常工作
  3. 但是在存储过程之后的同一个文件中,当我添加第二个调用时,它会给我以下错误,

      

    错误代码1064,SQL状态42000:您的SQL中有错误   句法;查看与MySQL服务器版本对应的手册   正确的语法使用near' call   Add_Template(' Bac_Bus_Adm',' frmBusAdm.jsp',' Bachel'在第2行

    注意: - 表创建脚本

    CREATE TABLE IF NOT EXISTS application_template_tab(
                        app_template_id          VARCHAR(20)    NOT NULL,
                        form_name                VARCHAR(100)   NOT NULL,
                        template_desc            VARCHAR(500)   NOT NULL,
    PRIMARY KEY (app_template_id));
    

1 个答案:

答案 0 :(得分:1)

在您的文件中,您正在使用;更改默认值DELIMITER //的语句分隔符。

这是客户端正确处理过程声明等复杂语句所必需的。

但错误表明您没有将其恢复为默认值。

END //之后但在CALL语句之前,您需要:

DELIMITER ;  -- note there is a space required before the ;