sql >> Database >  >> RDS >> Oracle

PHP:oci_bind_by_name en tijdstempelveld resulteert in ORA-01461:kan alleen een LONG-waarde binden voor invoegen in een LONG-kolom

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

Soms krijg je de foutmelding "ORA-01461:can bind a LONG value only for insert into a LONG column". Deze fout is zeer misleidend, vooral als u geen LANGE kolommen of LANGE waarden heeft.

Uit mijn tests blijkt dat deze fout kan worden veroorzaakt wanneer de waarde van een gebonden variabele de toegewezen lengte overschrijdt.

Om deze fout te voorkomen, moet u ervoor zorgen dat u lengtes opgeeft bij het binden van varchars, b.v.

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

En gebruik voor numeriek de standaardlengte (-1) maar vertel orakel dat het een geheel getal is, b.v.

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



  1. hoe pg_connect() functiefout te vangen?

  2. StringWriter gebruiken voor XML-serialisatie

  3. Hoe kan ik het databaseproces versnellen?

  4. Mysql delete-instructie met limiet