0

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

    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

然后这个插入器在程序中工作......但是当我用不需要 to_char 的原始版本恢复它时......它仍在工作......然后我让它运行了几天......因为它每次运行一次一天,它在前两天工作,然后在第三天停止工作......我验证了源表,每次运行这个程序时,源表都不为空......这太令人困惑了,因为如果我手动运行作为查询插入,每次我运行它时它都会工作......但是如果我把它放入一个过程中,它会不时工作......

4

1 回答 1

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;

什么都不能插入

于 2013-02-05T04:04:10.500 回答