3

test.sql:

SET @my_var = 50;

CREATE TABLE test_table (
    id SMALLINT NOT NULL,
    my_text VARCHAR(@my_var),
    PRIMARY KEY (id)
);

コマンドラインの相互作用:

mysql> source d:/test.sql;
Query OK, 0 rows affected (0.00 sec)

ERROR 1064 (42000): 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
'@my_var),
    PRIMARY KEY (id)
)' at line 3

これを行う方法はありますか?

4

1 に答える 1

2

CREATE TABLE全体を文字列としてコンパイルして実行する以外の方法は考えられません。

SET @my_var = 50;

PREPARE sql FROM '
CREATE TABLE test_table (
    id SMALLINT NOT NULL,
    my_text VARCHAR(' + @my_var + '),
    PRIMARY KEY (id)
);
'
EXECUTE sql;
DEALLOCATE PREPARE sql;

そのかなり醜いですが、動作するはずです。

于 2012-08-19T23:05:15.183 に答える