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

PHP:il campo oci_bind_by_name e timestamp risulta in ORA-01461:può associare un valore LONG solo per l'inserimento in una colonna LONG

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

A volte viene visualizzato l'errore "ORA-01461:può associare un valore LONG solo per l'inserimento in una colonna LONG". Questo errore è altamente fuorviante soprattutto quando non hai colonne LONG o valori LONG.

Dai miei test sembra che questo errore possa essere causato quando il valore di una variabile associata supera la lunghezza allocata.

Per evitare questo errore, assicurati di specificare le lunghezze durante il binding di varchars, ad es.

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

E per i numeri usa la lunghezza predefinita (-1) ma dì a Oracle che è un numero intero, ad es.

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