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

PHP:oci_bind_by_name e o campo timestamp resultam em ORA-01461:pode vincular um valor LONG apenas para inserir em uma coluna LONG


De (http://www.php .net/manual/en/function.oci-bind-by-name.php#92334 ):

Às vezes, você recebe o erro "ORA-01461:pode vincular um valor LONG apenas para inserir em uma coluna LONG". Esse erro é altamente enganoso, especialmente quando você não tem colunas LONG ou valores LONG.

Dos meus testes, parece que esse erro pode ser causado quando o valor de uma variável vinculada excede o comprimento alocado.

Para evitar esse erro, certifique-se de especificar comprimentos ao vincular varchars, por exemplo.
<?php
    oci_bind_by_name($stmt,':string',$string, 256);
?>

E para numéricos, use o comprimento padrão (-1), mas diga ao oracle que é um número inteiro, por exemplo
<?php
    oci_bind_by_name($stmt,':num',$num, -1, SQLT_INT);
?>