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 .