sql >> Databasteknik >  >> RDS >> Mysql

Mysql bygger dynamiskt frågesträng i en lagrad procedur baserad på logik

Lösningen är att använda execute och concat:

CREATE DEFINER=`root`@`localhost` PROCEDURE `test`(input VARCHAR(15))
BEGIN
SET @input = input;

if @input="asc" then
    SET @sort = " order by ActivityLogKey asc";
elseif @input = "desc" then
    SET @sort = " order by ActivityLogKey desc";
else
    SET @sort ="";
end if;

SET @query = CONCAT('select * from activitylog ',@sort,' limit 0, 5');

PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

END



  1. ASIN() Exempel i SQL Server

  2. oracle 12c - välj sträng efter senaste förekomsten av ett tecken

  3. com.mchange.v2.resourcepool.CannotAcquireResourceException:En ResourcePool kunde inte förvärva en resurs från sin primära fabrik eller källa

  4. SQL Server Update Databas Statistics