Oracle
 sql >> Base de données >  >> RDS >> Oracle

PHP :les résultats des champs oci_bind_by_name et timestamp dans ORA-01461 :peuvent lier une valeur LONG uniquement pour l'insertion dans une colonne LONG

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

Parfois, vous obtenez l'erreur "ORA-01461 :peut lier une valeur LONG uniquement pour l'insertion dans une colonne LONG". Cette erreur est très trompeuse, surtout lorsque vous n'avez pas de colonnes LONG ou de valeurs LONG.

D'après mes tests, il semble que cette erreur puisse être causée lorsque la valeur d'une variable liée dépasse la longueur allouée.

Pour éviter cette erreur, assurez-vous de spécifier des longueurs lors de la liaison de varchars, par exemple.

<?php
    oci_bind_by_name($stmt,':string',$string, 256);
?>

Et pour les numériques, utilisez la longueur par défaut (-1) mais dites à Oracle que c'est un entier, par exemple.

<?php
    oci_bind_by_name($stmt,':num',$num, -1, SQLT_INT);
?>