Korzystanie z foreach podejście od mojej odpowiedzi
na inne z Twoich pytań nie jest dobrym pomysłem w przypadku procedur składowanych.
Chociaż to działa (jak pokazano w twoim pytaniu, zmienne są ustawione w $params tablicy po wykonaniu) największym problemem jest to, że musisz podać czwarty parametr (maxlength ) do oci_bind_by_name . Użyłeś wartości statycznej 32 w kodzie, ale błąd jest zgłaszany, gdy długość wartości przekracza tę wartość. Nie można go obliczyć w czasie wykonywania, a ustawienie bardzo dużej wartości jest nieefektywne (może nie stanowi to problemu dla Twojej aplikacji).
Ponieważ używasz znanej procedury składowanej, powinieneś znać maxlength wartości wyjściowych w czasie projektowania i można je wprowadzić statycznie, umieszczając wszystkie oci_* funkcje w getHours() , zamiast próbować abstrahować wszystkie wywołania customExecute() .