我不得不轉換MSSQL存儲過程是通過一個varchar
這是一個查詢:是否有可能在MySQL中執行一個字符串?
INSERT INTO Results
EXEC (@Expresion);
這是行不通的。我很確定EXEC
和EXECUTE
不是MySQL命令,但CALL
也不起作用。
有誰知道,如果它甚至可能有像JavaScript的eval
函數的MySQL?
我不得不轉換MSSQL存儲過程是通過一個varchar
這是一個查詢:是否有可能在MySQL中執行一個字符串?
INSERT INTO Results
EXEC (@Expresion);
這是行不通的。我很確定EXEC
和EXECUTE
不是MySQL命令,但CALL
也不起作用。
有誰知道,如果它甚至可能有像JavaScript的eval
函數的MySQL?
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;
這是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
聲明想要一個會話變量(前綴爲@
)。如果你試圖通過一個正常的變量,它會舉起雙手在空中,它不會在乎。
`@Expression ='選擇「你好,世界!」;';`不適合我。我正在使用MySQL v5.6.30。 – kenorb 2016-08-02 10:42:26
EXECUTE
MySQL命令只能用於一個預準備語句。
如果想要從字符串執行多個查詢,請考慮將它們保存到文件中並將其來源,例如,
SET @query = 'SELECT 1; SELECT 2; SELECT 3;';
SELECT @query INTO OUTFILE '/tmp/temp.sql';
SOURCE /tmp/temp.sql;
上次命令中的@ ads是什麼? – 2017-01-17 07:47:51