El objetivo es modificar una cadena de consulta dentro de un procedimiento almacenado Mysql basado en variables de entrada.Mysql construye dinámicamente cadena de consulta en un procedimiento almacenado basado en lógica
Algo como esto:
CREATE DEFINER=`root`@`localhost` PROCEDURE `func`(type VARCHAR(15))
BEGIN
SET @type = type;
-- Check for the sort parameter
if @type="asc" THEN
SET @sort = " order by name asc";
elseif @type="desc" THEN
SET @sort = " order by name desc";
else
SET @sort ="";
end if;
SELECT id, name from table @sort;
END
La solución es utilizar ejecutar y concat: CREATE DEFINER = 'root' @ 'localhost' PROCEDURE' test' (entrada VARCHAR (15)) BEGIN SET @input = entrada; if @ input = "asc" then SET @sort = "orden por ActivityLogKey asc"; elseif @input = "desc" luego SET @sort = "ordenar por ActivityLogKey desc"; else SET @sort = ""; final si; SET @query = CONCAT ('select * from activitylog', @ sort, 'limit 0, 5'); PREPARE stmt FROM @query; EJECUTAR stmt; DEALLOCATE PREPARE stmt; END –
Si esta es la solución por la que no la agregó como respuesta y la acepta o edita su pregunta con ella. –
Sin 100 reputación, tengo que esperar 8 horas para responder mi propia pregunta –