Celem jest zmiana ciągu zapytania w procedurze przechowywanej Mysql na podstawie zmiennych wejściowych.Mysql dynamicznie buduje ciąg zapytania w procedurze przechowywanej opartej na logice
coś takiego:
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
Rozwiązaniem jest użycie wykonać i concat: TWORZENIE Definer = 'root' @ 'localhost' PROCEDURE' test' (wejście VARCHAR (15)) BEGIN BEGIN BEGIN BEGIN SET @input = input; if @ input = "asc" następnie SET @sort = "order by ActivityLogKey asc"; elseif @input = "desc" następnie SET @sort = "order by ActivityLogKey desc"; else SET @sort = ""; koniec if; SET @query = CONCAT ("wybierz * z rejestru aktywności", @ sortuj, "limit 0, 5"); PREPARE stmt FROM @query; WYKONAJ ZASADNICĘ; WYKORZYSTUJESZ DEALOKACJĘ stp; END –
Jeśli to jest rozwiązanie, dlaczego nie dodałeś go jako odpowiedzi i zaakceptuj lub edytuj swoje pytanie za pomocą tego. –
Bez 100 reputacji, muszę poczekać 8 godzin, aby odpowiedzieć na moje własne pytanie. –