mssql链接名ajdinsert into sqltable@ajd select * from oracletable where substr(field1,1,10)<>'5';
这条语句执行后报“无效sql语句”错误,怀疑是substr引起的问题,因为单独执行select * from oracletable where substr(field1,1,10)<>'5';这部分是没问题的
执行select * from sqltable@ajd也没有问题
请问应怎样解决,应该怎样写substr(field1,1,10)<>'5'这个条件才能正确执行??

解决方案 »

  1.   

    SQL中,insert语句的语法是:
    insert into table_name[column_name[,column_name]]
    values(value[,value...])
    如果对表中各个列插入值,可以采用如下形式:
    insert into table_name
    values(value,value,...)。根据楼主的问题,当满足条件时才插入。所以不适合用insert语句,在Oracle中可以使用Merge语句可以解决问题,在SQL server2000中你再找找类似的语句。
      

  2.   

    Oracle9i引入了MERGE命令,你能够在一个SQL语句中对一个表同时执行inserts和updates操作. MERGE命令从一个或多个数据源中选择行来updating或inserting到一个或多个表.MERGE INTO sqltable@ajd p
         USING oracletable np
         ON (substr(field1,1,10) = '5')
         WHEN NOT MATCHED THEN
         INSERT
         VALUES (...);
      

  3.   


    sqltable是SQL Server的表吗?
    从Oracle插入数据到SQL Server要用透明网关