sql过程导入错误

时间:2014-02-27 07:19:16

标签: php mysql

DELIMITER $$
drop procedure IF EXISTS `simpleproc`$$
CREATE PROCEDURE `simpleproc`(OUT param1 INT)
BEGIN
SELECT COUNT(*) INTO param1 FROM t;
END $$
DELIMITER ;

我正在尝试使用PHP导入上面的代码,但是我收到了这个错误:

  

执行查询时出错'':您的SQL语法中有错误;查看与您的MySQL服务器版本相对应的手册,以便在'DELIMITER $$ drop procedure'附近使用正确的语法如果在第1行创建simpleproc $$ CREATE PROCEDURE`simplepro'

3 个答案:

答案 0 :(得分:0)

以上语法只能在MySQL 命令行客户端上执行 使用服务器端脚本语言也无法正常工作。

相反,您可以使用以下字符串构建query并传递给mysqli->query

CREATE PROCEDURE simpleproc (OUT param1 INT )
BEGIN
    SELECT COUNT(*) INTO param1 FROM t;
END;

注意 的:
如果只有一个语句要在存储过程中处理和执行, 你甚至不需要begin - end块。

这是正确的:

CREATE PROCEDURE simpleproc (OUT param1 INT )
    SELECT COUNT(*) INTO param1 FROM t;

答案 1 :(得分:0)

您的过程语法有错误,请使用以下

DELIMITER $$;

DROP PROCEDURE IF EXISTS `simpleproc`$$

CREATE PROCEDURE `simpleproc` (OUT param1 INT)
BEGIN
    SELECT COUNT(*) INTO param1 FROM t;
END$$

DELIMITER ;$$

这将解决您的问题

答案 2 :(得分:0)

DELIMITER $$

DROP PROCEDURE IF EXISTS `simpleproc`$$

CREATE PROCEDURE `simpleproc`(OUT param1 INT)

READS SQL DATA

BEGIN

SELECT COUNT(*) INTO param1 FROM t;

END $$

DELIMITER ;$$