それは、MySQLで文字列を実行することは可能ですか?
-
14-09-2019 - |
質問
私は、クエリでvarchar
を渡しMSSQLストアドプロシージャを変換する必要があります:
INSERT INTO Results
EXEC (@Expresion);
これは動作しません。私はEXEC
とEXECUTE
は、MySQLのコマンドではないことをかなり確信しているが、どちらかCALL
動作しません。
これは、MySQLのためのJavaScriptのeval
機能のようなものを持っていることも可能だ場合、誰もが知っていますか?
解決
EXECUTE MySQLで有効なコマンドです。 MySQLのリファレンスマニュアルで
他のヒント
私はあなたがこのような何かを探しているのだと思います:
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;
そして正確に元の質問に答えるために:
@Expression = 'SELECT "Hello, World!";'
PREPARE myquery FROM @Expression;
INSERT INTO Results
EXECUTE myquery;
PREPARE ... FROM
文は(@
接頭辞)セッション変数を望んでいることに注意してください。あなたは、通常の変数を渡すしようとすると、それが空気中でその手を投げるだろうと、それだけで気にしません。
EXECUTE
のMySQLのコマンドは、1つのみを使用することができます文を作成します。
あなたは文字列から複数のクエリを実行したい場合場合は、例えば、ファイルやソース、それをにそれらを保存検討します。
SET @query = 'SELECT 1; SELECT 2; SELECT 3;';
SELECT @query INTO OUTFILE '/tmp/temp.sql';
SOURCE /tmp/temp.sql;
所属していません StackOverflow