Oracle
 sql >> Base de données >  >> RDS >> Oracle

Procédure stockée d'appel PHP-OCI avec paramètres

Utilisation de foreach approche de ma réponse à une autre de vos questions n'est pas une bonne idée lorsqu'il s'agit de procédures stockées.

Bien que cela fonctionne (comme indiqué dans votre question, les variables sont définies dans le $params tableau après exécution), le plus gros problème est que vous devez fournir le quatrième paramètre (maxlength ) à oci_bind_by_name . Vous avez utilisé une valeur statique de 32 dans votre code, mais une erreur est générée lorsque la longueur d'une valeur dépasse cette valeur. Il ne peut pas être calculé au moment de l'exécution et le définir sur une valeur très élevée est inefficace (ce n'est peut-être pas un problème pour votre application).

Puisque vous exécutez une procédure stockée connue, vous devez connaître le maxlength des valeurs de sortie au moment de la conception et celles-ci peuvent être entrées statiquement en mettant tous les oci_* fonctions dans getHours() , au lieu d'essayer d'abstraire tous les appels à customExecute() .