8

我想mysql从 PHP 运行以下创建函数语句:

DELIMITER $$
CREATE FUNCTION `myFunc`(`instring` varchar(4000)) RETURNS int(11)
    NO SQL
    DETERMINISTIC
    SQL SECURITY INVOKER
BEGIN
    DECLARE position int;
    ....here comes function logic
    RETURN position;
END$$
DELIMITER ;

但我得到这个mysql错误:

检查与您的 MySQL 服务器版本相对应的手册,以获取在“DELIMITER”附近使用的正确语法

我能做些什么?我可以在没有 DELIMITER 关键字的情况下执行创建语句吗?

4

1 回答 1

12

您很可能不需要该DELIMTER命令。那属于以 MySQL 为中心的客户端程序。

请尝试使用普通的旧分号:

if (!$mysqli->query("DROP PROCEDURE IF EXISTS p") ||
    !$mysqli->query("CREATE PROCEDURE p(IN id_val INT) BEGIN INSERT INTO test(id) VALUES(id_val); END;")) {
    echo "Stored procedure creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

并让 PHP 担心分隔

警告

我从http://php.net/manual/en/mysqli.quickstart.stored-procedures.php得到了上面的代码

于 2013-01-28T19:26:27.653 回答