8

mysqlPHP から次の create function ステートメントを実行したいと考えています。

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 エラーが発生します。

「DELIMITER」の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

私に何ができる?DELIMITER キーワードなしで create ステートメントを実行できますか?

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 に答える