Oracle
 sql >> база данни >  >> RDS >> Oracle

PHP:oci_bind_by_name и полето timestamp води до ORA-01461:може да обвърже стойност LONG само за вмъкване в колона LONG

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

Понякога получавате грешката „ORA-01461:може да обвърже стойност LONG само за вмъкване в колона LONG“. Тази грешка е силно подвеждаща, особено когато нямате LONG колони или LONG стойности.

От моето тестване изглежда, че тази грешка може да бъде причинена, когато стойността на обвързана променлива надвишава разпределената дължина.

За да избегнете тази грешка, уверете се, че сте посочили дължини, когато обвързвате varchars, напр.

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

А за числа използвайте дължината по подразбиране (-1), но кажете на оракул, че е цяло число, напр.

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle LISTAGG() за използване при заявки

  2. Как да изберете свързана група елементи в Oracle SQL

  3. Преобразуване на unix timestamp в Date и DateTime - SQL/ORACLE

  4. Изваждане на 30 години от текущата дата в Oracle SQL

  5. PL/SQL и SQL скрипт в един sqlFile с liquibase?