varchar
クエリであるa を渡す MSSQL ストアド プロシージャを変換する必要があります。
INSERT INTO Results
EXEC (@Expresion);
これは機能していません。私はそれがMySQLコマンドではないことを確信していますが、EXEC
どちらも機能しません。EXECUTE
CALL
eval
MySQL にJavaScript のような機能を持たせることさえ可能かどうかは誰にもわかりませんか?
varchar
クエリであるa を渡す MSSQL ストアド プロシージャを変換する必要があります。
INSERT INTO Results
EXEC (@Expresion);
これは機能していません。私はそれがMySQLコマンドではないことを確信していますが、EXEC
どちらも機能しません。EXECUTE
CALL
eval
MySQL にJavaScript のような機能を持たせることさえ可能かどうかは誰にもわかりませんか?
私はあなたがこのようなものを探していると思います:
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;
これは、次の SQL に相当しますeval(my_string);
。
@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 で有効なコマンドです。MySQL リファレンス マニュアル
MySQL コマンドは、EXECUTE
1 つの準備済みステートメントに対してのみ使用できます。
文字列から複数のクエリを実行する場合は、それらをファイルに保存してソースにすることを検討してください。
SET @query = 'SELECT 1; SELECT 2; SELECT 3;';
SELECT @query INTO OUTFILE '/tmp/temp.sql';
SOURCE /tmp/temp.sql;