質問

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

INSERT INTO Results
  EXEC (@Expresion);

これは動作しません。私はEXECEXECUTEは、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;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top