sql >> Databasteknik >  >> RDS >> Oracle

PHP:oci_bind_by_name och tidsstämpelfält resulterar i ORA-01461:kan binda ett LONG-värde endast för att infogas i en LONG-kolumn

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

Ibland får du felet "ORA-01461:kan binda ett LONG-värde endast för att infogas i en LONG-kolumn". Det här felet är mycket missvisande, särskilt när du inte har några LONG-kolumner eller LONG-värden.

Från mina tester verkar det som om detta fel kan orsakas när värdet på en bunden variabel överskrider den tilldelade längden.

För att undvika detta fel, se till att du anger längder när du binder varchar, t.ex.

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

Och för siffror använd standardlängden (-1) men säg till oracle att det är ett heltal t.ex.

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



  1. Hämta och samla in bulk från sys_refcursor från en annan procedur och infoga i en annan tabell

  2. Hur lagrar jag beställningar?

  3. Hur skickar jag sqlparameter till IN()?

  4. SQL för att generera periodiska ögonblicksbilder från transaktionstabellen