问题:
存储过程中:"INSERT INTO REMOTE_TABLE@DB_LINK(COLUMN1,COLUMN2,...)  SELECT  (COLUMN1,COLUMN2,...)  FROM LOCAL_VIEW "
在本地的视图中用到了CASE WHEN 语句形成列,想把数据插入到远程数据库的与视图同结构的表中,出现的错误提示如下:
ORA-22804 remote operations not permitted on object tables or user-defined type columns
调试:
1.测试时用的本地表,没有问题
2.本地执行INSERT INTO REMOTE_TABLE@DB_LINK(COLUMN1,COLUMN2,...)  VALUES(VALUE1,VALUE2...)这样的语句也执行成功上网查有网友贴中提到相同的问题,说视图中有CASE WHEN 就不能用数据库连接。
这是真的吗?????
如何解决??????查找了一些网上的信息,解决办法说的这样
Cause
An attempt was made to perform queries or DML operations on remote object tables or on remote table columns whose type is one of object, REF, nested table or VARRAY. 
Action
Remove the reference to remote tables in the statement. 能帮我解释一下这些吗?
是设置一下远程表就可以了吗?
到底该怎么解决呢?

解决方案 »

  1.   

    ORA-22804 remote operations not permitted on object tables or user-defined type columns在本地数据库给远程表建立公共同义词create public synonym table_name for table_name@db_link;
      

  2.   

    同义词也不行啊,而且可以确定,只在视图中出现CASE WHEN 语句形成的列进行导入时出问题
    是ORACLE的问题吗?
      

  3.   

    提示不是明白的很吗? 你的版本不行就是不行,先考虑用decode来绕过。逼近case是9i后才有的,oracle大概没有那么关心这个。
      

  4.   

    谢谢真是还差很多啊,DECODE竟然还不知道有这个函数,惭愧请问:
    那句话提示是版本的问题啊?(学习一下)
    我的是9i啊,9i也不支持吗?