8
votes

Les déclarations préparées doivent-elles être traitées lorsqu'elles sont utilisées à l'intérieur des procédures stockées?

Lorsque vous utilisez des relevés préparés à l'intérieur des procédures stockées, devraient-ils être traités à la fin de la procédure ou non, ou cela n'a-t-il pas d'importance, et pourquoi?

Certains code pour expliquer: P>

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 $$


0 commentaires

3 Réponses :



1
votes

Si vous utilisez la mise en commun de la connexion, il est certainement une bonne idée de les interdire.


1 commentaires

Cela ne peut pas avoir raison: ce serait un risque de sécurité fondamental en cas de réutilisation d'une connexion en raison de la mise en commun Exposé Toutes les informations liées à une session précédente. Par conséquent, la répartition documentée à la fin d'une session doit être avant qu'une connexion soit réutilisée à partir du pool.



0
votes

Les déclarations préparées de translocation dans les routines stockées sont les meilleures pratiques.

Les déclarations préparées sont globales à une session et ne sont pas automatiquement distribuées lorsqu'une routine stockée se termine.

Si vous avez une déclaration préparée trop créée mais non traitée, vous pourriez rencontrer / dépasser la limite max_prepared_stmt_count


0 commentaires