Al usar declaraciones preparadas dentro de los procedimientos almacenados, ¿deberían desasignarse al final del procedimiento o no, o no importa, y por qué?¿Deben desasignarse las declaraciones preparadas cuando se usan dentro de procedimientos almacenados?
algo de código para explicar:
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 $$
Por lo tanto - la declaración debe DEALLOCATE estar allí o no? ¡Aclamaciones!
/Victor
Gracias ... Si bien no es un gran "por qué", sin duda es la mejor respuesta del lote;) – Victor
MySQL documentos también dice: "Una declaración preparada también es global para la sesión. Si crea una declaración preparada dentro una rutina almacenada, _it no se desasigna cuando la rutina almacenada finaliza._ ". Por lo tanto, me desasignaría explícitamente después de terminar la ejecución. – Yasir