¿Es posible ejecutar una cadena en MySQL?

Tengo que convertir un proc MSSQL almacenado que pasa un varchar que es una consulta:

 INSERT INTO Results EXEC (@Expresion); 

Esto no está funcionando. Estoy bastante seguro de que EXEC y EXECUTE no son comandos de MySQL, pero CALL tampoco funciona.

¿Alguien sabe si incluso es posible tener algo como la función de eval de JavaScript para MySQL?

EXECUTE es un comando válido en MySQL. Manual de referencia de MySQL

Creo que estás buscando algo como esto:

 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; 

Este es el equivalente SQL de eval(my_string); :

 @Expression = 'SELECT "Hello, World!";'; PREPARE myquery FROM @Expression; EXECUTE myquery; 

Básicamente, combiné las respuestas existentes, ni tampoco te explico cómo hacer la evaluación exactamente.


Si desea agregar parámetros, puede usar esto:

 @username = "test"; @password = "asdf"; @Expression = 'SELECT id FROM Users WHERE name = ? AND pass = ?;' PREPARE myquery FROM @Expression; EXECUTE myquery USING @username, @password; 

Y para responder la pregunta original exactamente:

 @Expression = 'SELECT "Hello, World!";' PREPARE myquery FROM @Expression; INSERT INTO Results EXECUTE myquery; 

Tenga en cuenta que la instrucción PREPARE ... FROM quiere una variable de sesión (con el prefijo @ ). Si tratas de pasar una variable normal, levantará sus manos en el air y simplemente no le importará.

El comando EXECUTE MySQL solo se puede usar para una instrucción preparada.

Si desea ejecutar varias consultas desde la cadena, considere guardarlas en un archivo y buscarlas en origen, por ej.

 SET @query = 'SELECT 1; SELECT 2; SELECT 3;'; SELECT @query INTO OUTFILE '/tmp/temp.sql'; SOURCE /tmp/temp.sql; 
Intereting Posts