Използване на foreach подход от моят отговор
на друг от вашите въпроси не е добра идея, когато работите със съхранени процедури.
Въпреки че работи (както е показано във вашия въпрос, променливите са зададени в $params масив след изпълнение) най-големият проблем е, че трябва да предоставите четвъртия параметър (maxlength ) към oci_bind_by_name . Използвали сте статична стойност 32 във вашия код, но възниква грешка, когато дължината на стойност надвишава това. Не може да се изчисли по време на изпълнение и задаването му на много голяма стойност е неефективно (може би това не е проблем за вашето приложение).
Тъй като изпълнявате известна съхранена процедура, трябва да знаете maxlength на изходните стойности по време на проектиране и те могат да бъдат въведени статично чрез поставяне на всички oci_* функции в getHours() , вместо да се опитвате да абстрахирате всички извиквания към customExecute() .