私は、クエリであるvarchar
を渡すMSSQLストアドプロシージャを変換する必要があります:MySQLで文字列を実行することは可能ですか?
INSERT INTO Results
EXEC (@Expresion);
これは動作しません。私は、EXEC
とEXECUTE
はMySQLのコマンドではないと確信していますが、CALL
も動作しません。
誰かが、MySQLのJavaScriptのeval
関数のようなものを持っている可能性も知っていますか?
私は、クエリであるvarchar
を渡すMSSQLストアドプロシージャを変換する必要があります:MySQLで文字列を実行することは可能ですか?
INSERT INTO Results
EXEC (@Expresion);
これは動作しません。私は、EXEC
とEXECUTE
はMySQLのコマンドではないと確信していますが、CALL
も動作しません。
誰かが、MySQLのJavaScriptのeval
関数のようなものを持っている可能性も知っていますか?
EXECUTEはMySQLで有効なコマンドです。 MySQL reference manual
私はあなたがこのような何かを探していると思う:
SET @queryString = (
SELECT CONCAT('INSERT INTO user_group (`group_id`,`user_id`) VALUES ', www.vals) as res FROM (
SELECT GROUP_CONCAT(qwe.asd SEPARATOR ',') as vals FROM (
SELECT CONCAT('(59,', user_id, ')') as asd FROM access WHERE residency = 9
) as qwe
) as www
);
PREPARE stmt FROM @queryString;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @asd = NULL;
これはeval(my_string);
のSQLと同等です:
@Expression = 'SELECT "Hello, World!";';
PREPARE myquery FROM @Expression;
EXECUTE myquery;
基本的に私は、既存の答えを組み合わせない、どちらもわかります正確にevalを実行する方法。
@username = "test";
@password = "asdf";
@Expression = 'SELECT id FROM Users WHERE name = ? AND pass = ?;'
PREPARE myquery FROM @Expression;
EXECUTE myquery USING @username, @password;
そして正確に元の質問に答えるために:あなたはパラメータを追加したい場合は
、あなたはこれを使用することができますPREPARE ... FROM
文がセッション変数を望んでいること
@Expression = 'SELECT "Hello, World!";'
PREPARE myquery FROM @Expression;
INSERT INTO Results
EXECUTE myquery;
注意を(接頭辞は@
です)。通常の変数を渡そうとすると、手を空中に投げてしまい、気にしません。
EXECUTE
MySQLコマンドは、1つのプリペアドステートメントでのみ使用できます。
文字列から複数のクエリを実行する場合は、ファイルに保存してソースとすることを検討してください(例:
SET @query = 'SELECT 1; SELECT 2; SELECT 3;';
SELECT @query INTO OUTFILE '/tmp/temp.sql';
SOURCE /tmp/temp.sql;
最後のコマンドには「@ ads」とは何ですか? –