33

varcharクエリであるa を渡す MSSQL ストアド プロシージャを変換する必要があります。

INSERT INTO Results
  EXEC (@Expresion);

これは機能していません。私はそれがMySQLコマンドではないことを確信していますが、EXECどちらも機能しません。EXECUTECALL

evalMySQL にJavaScript のような機能を持たせることさえ可能かどうかは誰にもわかりませんか?

4

4 に答える 4

27

私はあなたがこのようなものを探していると思います:

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;
于 2015-10-30T18:01:51.730 に答える
22

これは、次の 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ステートメントがセッション変数 (接頭辞) を必要とすることに注意してください@。通常の変数を渡そうとすると、手が宙に浮いてしまい、気にしません。

于 2016-05-18T09:08:12.817 に答える
19

EXECUTE は MySQL で有効なコマンドです。MySQL リファレンス マニュアル

于 2009-06-16T01:15:52.127 に答える
1

MySQL コマンドは、EXECUTE1 つの準備済みステートメントに対してのみ使用できます。

文字列から複数のクエリを実行する場合は、それらをファイルに保存してソースにすることを検討してください。

SET @query = 'SELECT 1; SELECT 2; SELECT 3;';
SELECT @query INTO OUTFILE '/tmp/temp.sql';
SOURCE /tmp/temp.sql;
于 2016-08-02T11:03:50.030 に答える