Nou, ik gebruik eindelijk de opgeslagen procedure (ja, wat ik in eerste instantie niet wil) om een dynamische query te maken (ik denk niet dat het mogelijk was).
Hier is mijn code:De opgeslagen procedure:
DELIMITER |
DROP PROCEDURE IF EXISTS UpdateRank |
CREATE PROCEDURE UpdateRank(IN shortcut varchar(30))
BEGIN
SET @rank=0;
SET @query=CONCAT('UPDATE Rank SET ', shortcut, '[email protected]:[email protected]+1 ORDER BY ', shortcut);
PREPARE q1 FROM @query;
EXECUTE q1;
DEALLOCATE PREPARE q1;
END;
|
DELIMITER ;
De tip is het gebruik van de CONCAT-functie om dynamisch een query te maken in de opgeslagen procedure.
Roep vervolgens de procedure aan in de klassieke slaapstandfunctie:
Query q = em.createNativeQuery("CALL updateRank('lvl')");
q.executeUpdate();