Använda foreach
tillvägagångssätt från mitt svar
till en annan av dina frågor är inte en bra idé när du hanterar lagrade procedurer.
Medan det fungerar (som visas i din fråga, ställs variablerna in i $params
array efter körning) är det största problemet att du måste ange den fjärde parametern (maxlength
) till oci_bind_by_name
. Du har använt ett statiskt värde på 32
i din kod, men ett fel uppstår när längden på ett värde överskrider detta. Det kan inte beräknas vid körning och att ställa in det till ett mycket stort värde är ineffektivt (kanske är detta inte ett problem för din applikation).
Eftersom du kör en känd lagrad procedur bör du känna till maxlength
av utdatavärden vid design-tid och dessa kan matas in statiskt genom att sätta alla oci_*
funktioner i getHours()
, istället för att försöka abstrahera alla anrop till customExecute()
.