0

DECLARE動的クエリで変数を使用できるかどうかを尋ねたいと思います。

すなわち:

CREATE PROCEDURE `storedProcedureName`()
    DETERMINISTIC
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN

    SET @i = 0;

    PREPARE dynamicQuery FROM 'DECLARE x INT(11);';
    EXECUTE dynamicQuery;

    PREPARE dynamicQuery FROM 'SET x := ?;';
    EXECUTE dynamicQuery USING @i;

    DEALLOCATE PREPARE dynamicQuery;

    /* More Queries Here */

END

しかし、構文エラーが発生します:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE x INT(11)' at line 1

ありがとう

4

1 に答える 1

2
  • まず、DECLARE は BEGIN ... END 複合ステートメント内でのみ使用できます。
  • 2番目-すべてのステートメントを PREPARE ステートメントで使用できるわけではありません。詳細については、準備済みステートメントをご覧ください。

しかし、あなたはこのようなものを使うことができます -

SET @text = 'something';
SET @var = NULL;
SET @query = 'SELECT ? INTO @var';
PREPARE s FROM @query;
EXECUTE s USING @text;
DEALLOCATE PREPARE s;

SELECT @var;
+-----------+
| @var      |
+-----------+
| something |
+-----------+
于 2011-12-06T11:20:45.460 に答える