Oracle
 sql >> Datenbank >  >> RDS >> Oracle

PHP-OCI Call Stored Procedure mit Parametern

Verwenden von foreach Ansatz von meine Antwort zu einer anderen Ihrer Fragen ist keine gute Idee, wenn es um gespeicherte Prozeduren geht.

Während es funktioniert (wie in Ihrer Frage gezeigt, werden die Variablen in den $params gesetzt array nach der Ausführung) besteht das größte Problem darin, dass Sie den vierten Parameter (maxlength ) zu oci_bind_by_name . Sie haben einen statischen Wert von 32 verwendet in Ihrem Code, aber ein Fehler wird ausgelöst, wenn die Länge eines Werts diese überschreitet. Er kann zur Laufzeit nicht berechnet werden und es ist ineffizient, ihn auf einen sehr großen Wert zu setzen (vielleicht ist dies kein Problem für Ihre Anwendung).

Da Sie eine bekannte gespeicherte Prozedur ausführen, sollten Sie die maxlength kennen von Ausgabewerten zur Entwurfszeit und diese können statisch eingegeben werden, indem alle oci_* gesetzt werden Funktionen in getHours() , anstatt zu versuchen, alle Aufrufe von customExecute() zu abstrahieren .