MySQL 中可以执行字符串吗?
-
14-09-2019 - |
题
我必须转换一个传递以下信息的 MSSQL 存储过程 varchar
这是一个查询:
INSERT INTO Results
EXEC (@Expresion);
这不起作用。我很确定 EXEC
和 EXECUTE
不是 MySQL 命令,而是 CALL
也不行。
有谁知道是否有可能有类似 JavaScript 的东西 eval
MySQL 的函数?
解决方案
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;
<强>这是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命令只能用于一条准备好的语句。
如果您想从字符串执行多个查询,请考虑将它们保存到文件中并获取它,例如
SET @query = 'SELECT 1; SELECT 2; SELECT 3;';
SELECT @query INTO OUTFILE '/tmp/temp.sql';
SOURCE /tmp/temp.sql;
不隶属于 StackOverflow