Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Procedimento armazenado de chamada PHP-OCI com parâmetros


Usando o foreach abordagem de minha resposta para outra de suas perguntas não é uma boa ideia ao lidar com procedimentos armazenados.

Embora funcione (como mostrado em sua pergunta, as variáveis ​​são definidas no $params array após a execução) o maior problema é que você deve fornecer o quarto parâmetro (maxlength ) para oci_bind_by_name . Você usou um valor estático de 32 em seu código, mas um erro é gerado quando o comprimento de um valor excede isso. Ele não pode ser calculado em tempo de execução e configurá-lo para um valor muito grande é ineficiente (talvez isso não seja um problema para seu aplicativo).

Como você está executando um procedimento armazenado conhecido, você deve conhecer o maxlength de valores de saída em tempo de design e estes podem ser inseridos estaticamente colocando todos os oci_* funções em getHours() , em vez de tentar abstrair todas as chamadas para customExecute() .