post icon

Como ejecutar SQL dinámico en MySQL

Si necesitamos crear crear una consulta SQL que se vaya armando según algunos patrones, ya sean hechos por el usuario o algunos datos y no queremos crear muchos querys distintos y empezar a evaluar cual se ejecutará podemos recurrir a los SQL Dinámicos.

El mismo es soportado por la mayoría de los motores de base de datos, y en esta entrega veremos como hacerlo en MySQL, en las siguiente veremos como hacerlo en SQL Server y Oracle.

Consiste en crear una variable de texto (varchar en la mayoría de los casos) e ir armando dentro de ella la consulta a ejecutar, luego simplemente qudaría ejecutar la variable.

CREATE DEFINER = 'root'@'localhost'
PROCEDURE BD.STORED_PROCEDURE_1(IN pListaIds VARCHAR(1000))
BEGIN
  -- creamos una variable y concatenamos los textos, la variable
  -- pListaIds recibe varios ID concatenados de una vez
  SET @Query = CONCAT('update tabla set campoX = algunValor where Id in(',pListaIds,')');
  -- preparamos el objete Statement a partir de nuestra variable
  PREPARE smpt FROM @Query;
  -- ejecutamos el Statement
  EXECUTE smpt;
  -- liberamos la memoria
  DEALLOCATE PREPARE smpt;
END

2 Comentarios

Deja tu Comentario
  1. Alejandro VENEZUELA Mozilla Firefox Ubuntu Linux
    11 enero 2011 at 13:06 #

    Hola! Existirá alguna forma de almacenar el resultado de la consulta en una variable? Yo necesito que una variable almacene el resultado de una consulta y no se como hacerlo. Gracias de antemano!

Trackbacks/Pingbacks

  1. Como ejecutar SQL dinámico en SQL Server | DevTroce.com WordPress - 9 noviembre 2010

    [...] Recién escribía sobre SQL Dinámico sobre MySQL y aprovecho para escribir también sobre SQL Server. Escencialmente son muy parecidos [...]

Responder