Mysql dynamisch zu erstellen query-string in einer gespeicherten Prozedur basiert auf Logik
Dem Ziel zu ändern, ein query-string in eine Mysql stored procedure basiert auf input-Variablen.
Etwas wie dieses:
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
- Die Lösung ist die Verwendung von execute, und concat: CREATE DEFINER=
root
@localhost
VERFAHRENtest
(Eingabe VARCHAR(15)) BEGIN SET @input = input; if @input="asc" dann LEGEN Sie @Art = "order by ActivityLogKey asc"; elseif @input = "desc" dann LEGEN Sie @Art = "order by ActivityLogKey desc"; else SET @Art =""; end if; SET @query = CONCAT('select * from activitylog ',@Art,"limit 0, 5'); PREPARE stmt VON @Abfrage; EXECUTE stmt; DEALLOCATE PREPARE stmt; END - Wenn dies die Lösung, warum Sie nicht hinzufügen, es als Antwort und es akzeptieren oder Bearbeiten Sie Ihre Frage mit.
- Ohne 100 Ruf, ich muss warten 8 Stunden für die Beantwortung meiner eigenen Frage
- Dann warten. Die Einschränkung war nicht aufgestellt, weil die devs wollen, dass Sie veröffentlichen Sie Ihre Antwort an der falschen Stelle; es wurde aufgestellt, weil Sie wollen, dass Sie, zu warten. Es gibt Gründe dafür.
- Gute Beratung. Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Lösung ist, verwenden Sie execute, und concat: