Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal. Eu estou utilizando stored procedures do oracle, e todos os parâmetros que passo para esta procedure estão indo corretamente, exceto o parâmetro que passo dentro de um foreach. Pesquisando no manual do PHP, a parte do código ficou assim:
foreach($_POST['nParcelas'] as $chave => $valor)
{
ocibindbyname($vencimento, ":v_qtd_parcelas", $_POST['nParcelas'][$chave]);
}<select name="nParcelas[]" id="nParcelas[]">
aqui vão os dados do select
</select>
Eu só consigo passar o parâmetro dentro do foreach se eu selecionar o último campo select do formulário. Se eu tentar selecionar qualquer outro select antes do último, o parâmtero não é passado, pois eu recebo o seguinte erro:
Warning: ociexecute() [function.ociexecute]: ORA-06502: PL/SQL: erro numérico ou de valor ORA-06512:
Se alguém tiver uma solução para esse procedimento, eu agradeço.
Att.
Hinom, obrigado por responder. Eu havia pesquisado, e vi que este erro acontece quando por exemplo voce tenta atribuir u valor de 3 dígitos para uma variável que só aceita 2. Vi alguns foruns, várias pessoas têm tido o mesmo problema com foreach e ocibindbyname. Pra evitar maiores dores de cabeça eu modifiquei meu código. Deixei de armazenar os selects em arrays, e dei pra cada um, um nome diferente, relacionado o código. Peguei o valor dos selects sem necessitar de um foreach, e agora funcionou.
Obrigado pela atenção.
na verdade nao tem nada a ver com o laço mas sim com o tipo de dados sendo passado no parâmetro..
o importante é que resolveu.
está enviando um parâmetro com tipo de dados arbitrário
por isso o erro
depure o código para descobrir a falha.
pesquise no google "ORA-06512"