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

次に、このInserは手順で機能します...しかし、to_charを持たない元のバージョンに戻すと...まだ機能しています...その後、数日間実行し続けました...毎に1回実行されるため最初の 2 日間は機能していましたが、3 日目には機能しなくなりました... ソース テーブルを確認しましたが、この手順を実行するたびにソース テーブルが空ではありませんでした... 手動でクエリとして挿入すると、実行するたびに機能しました...ただし、それをプロシージャに入れると、時々機能します..

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 に答える