我有一个表privilege 直接用sql  insert into privilege (company_id , module ,lang_id ,program_id ,program_name , priv_id ,priv_desc )
values ('21','測試報表_P','chs','CM_RPT054','測試報表',51,'測試報表')插入没有问题,在pl/sql中
用select * from privilege where 1 = 2 for update 执行eidt data 然后在把上面值填入,执行,居然报ORA-01461错误ORA-01461 can bind a LONG value only for insert into a LONG column 

解决方案 »

  1.   

    ORA-01461 can bind a LONG value only for insert into a LONG columnCause: An attempt was made to insert a value from a LONG datatype into another datatype. This is not allowed.Action: Do not try to insert LONG datatypes into other types of columns.
      

  2.   

    COMPANY_ID VARCHAR2 20
    MODULE VARCHAR2 400
    LANG_ID VARCHAR2 4
    PROGRAM_ID VARCHAR2 20
    PROGRAM_NAME VARCHAR2 400
    PRIV_ID NUMBER 22
    PRIV_DESC VARCHAR2 400
    表结构是这样的,我没有输入不对的类型。
      

  3.   

    -- 看一下 privilege 表结构:是不是有 long 类型的字段 ?
    -- 如果表有 long 类型的字段,在插入语句中不能使用绑定变量!应该是这个意思!
      

  4.   

    请大家帮忙分析一下,我发的问题,表结构已经给出,只有一个number类型的字段。
      

  5.   

    这个应该和number类型的字段没有关系。看下VARCHAR2类型的字段值是否过长?
    还有一个可能性是驱动问题