Podczas korzystania z przygotowanych oświadczeń w procedurach przechowywanych, czy należy je zwolnić na końcu procedury, czy też nie, i dlaczego?Czy przygotowane instrukcje powinny zostać zwolnione, jeśli są używane w procedurach przechowywanych?
Niektóre kod wyjaśnić:
CREATE PROCEDURE getCompanyByName (IN name VARCHAR(100))
NOT DETERMINISTIC
BEGIN
PREPARE gcbnStatement FROM 'SELECT * FROM Companies WHERE name=? LIMIT 1';
SET @companyName = name;
EXECUTE gcbnStatement USING @companyName;
DEALLOCATE PREPARE gcbnStatement;
END $$
Więc - jeżeli oświadczenie deallocate być tam czy nie? Twoje zdrowie!
/Victor
Dzięki ... Choć nie jest to zbytnio "dlaczego", to z pewnością jest to najlepsza odpowiedź;) – Victor
Dokumenty MySQL mówią również: "Przygotowane oświadczenie jest również globalne dla sesji .Jeśli utworzysz przygotowane oświadczenie w ciągu zapisana procedura _it nie jest zwalniana, gdy zapisana procedura kończy się. ". Dlatego wyraźnie zwolniłem po zakończeniu egzekucji. – Yasir