Oracle
 sql >> Database >  >> RDS >> Oracle

PHP-OCI Call Stored Procedure con parametri

Usando il foreach approccio da la mia risposta a un'altra delle tue domande non è una buona idea quando si tratta di stored procedure.

Mentre funziona (come mostrato nella tua domanda, le variabili sono impostate in $params array dopo l'esecuzione) il problema più grande è che devi fornire il quarto parametro (maxlength ) a oci_bind_by_name . Hai utilizzato un valore statico di 32 nel tuo codice, ma viene generato un errore quando la lunghezza di un valore supera questo. Non può essere calcolato in fase di esecuzione e impostarlo su un valore molto grande è inefficiente (forse questo non è un problema per la tua applicazione).

Poiché stai eseguendo una procedura memorizzata nota, dovresti conoscere il maxlength di valori di output in fase di progettazione e questi possono essere inseriti staticamente inserendo tutti gli oci_* funzioni in getHours() , invece di tentare di astrarre tutte le chiamate a customExecute() .