我必须转换一个传递以下信息的 MSSQL 存储过程 varchar 这是一个查询:

INSERT INTO Results
  EXEC (@Expresion);

这不起作用。我很确定 EXECEXECUTE 不是 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;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top