Oracle 10g Insert查询作为查询与过程执行不一致,并且不时执行不同的操作

时间:2013-02-04 16:13:14

标签: oracle10g

我面临一个非常奇怪的问题,我在程序中有一个插入语句...... 几乎

    inert
    into oracle_Table
    SELECT cr.a AS a,       
           cr.b AS b,
           cr.c AS c,
           max(d.column_name) as d
    FROM "table 1"@Pmo.World Cr,
          table2@Pmo.World       d
     WHERE d."a" = cr."column name"
     GROUP BY cr.a,
              cr.b,
              cr.c

@ Pmo.World是MSSQL的数据库链接......

我现在遇到的问题是,每次我将此插件作为查询运行时。一切都像它应该的那样......然而,当我把这个插入到一个过程中时,它什么都不插入......

考虑角色转换问题我将程序改为

inert
into oracle_Table
SELECT to_char(cr.a) AS a,       
       to_char(cr.b) AS b,
       to_char(cr.c) AS c,
       max(d.column_name) as d
  FROM "table 1"@Pmo.World Cr,
       table2@Pmo.World       d
 WHERE d."a" = cr."column name"
 GROUP BY cr.a,
          cr.b,
          cr.c

然后这个Inser在程序中工作......但是当我用原始版本恢复它时,它没有to_char ...它仍在工作......然后我让它运行了几天......因为它每天运行一次,前两天工作,然后第三天停止工作...... 我验证了源表,每次运行此过程时,源表都不为空... 它是如此混乱,因为如果我手动运行插入作为查询,它每次运行时都有效...但是如果我把它放入一个程序,它会不时工作..

1 个答案:

答案 0 :(得分:0)

a,b,c有varchar2的类型,我确实在插入后提交了... 例如 如果我有测试程序

declare 
-- Local variables here
i integer;
begin
inert
into oracle_Table
SELECT cr.a AS a, 
cr.b AS b,
cr.c AS c,
max(d.column_name) as d
FROM "table 1"@Pmo.World Cr,
table2@Pmo.World d
WHERE d."a" = cr."column name"
GROUP BY cr.a,
cr.b,
cr.c
end;
commit;

无法插入任何内容