ORA-01478: array bind may not include any LONG columns
Cause: User is performing an array bind with a bind variable whose maximum size is greater than 2000 bytes.
Action: Such bind variables cannot participate in array binds. Use an ordinary bind operation instead.
Oracle错误ORA-01478为“array bind may not include any LONG columns”,提示不能将 LONG 列包含在 PL/SQL 数组绑定变量中。
ORA-01478: array bind may not include any LONG columns
Cause: an attempt was made to bind a LONG column into a PL/SQL array.
Action: do not use LONG columns in bind arrays.
ORA-1478在数据库层面一般是由于一个程序执行多条SQL语句时,使用了复合语句,其中某个SQL语句中又使用了有列中有属于long属性的列,就会报ORA-1478错误。
1. 首先需要确定当前数据库报ORA-1478的原因,原因分析时,可以根据ORA-1478的错误提示信息来做:”attempt was made to bind a LONG column into a PL/SQL array”,也就是当前执行的语句或程序中有使用了long属性的列,需要分析执行语句或程序确定使用了long属性的列;
2. 确定原因后,需要重新编写程序,从中去掉对long属性的列的使用,然后重新测试;
3. 如果不能去掉,可以使用DBMS_SQL调用,来解决ORA-1478的问题,DBMS_SQL定义了几种存取LONG属性的列,在DBMS_SQL的DESCRIBE_COLUMNS等函数中有提供存取LONG属性的列的方式。