2013-02-04 27 views
0

我面臨一個很奇怪的問題,我在過程中... 非常有插入語句Oracle 10g中插入查詢執行一個查詢VS程序不一致,執行不同不時

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, 
      [email protected]  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, 
     [email protected]  d 
WHERE d."a" = cr."column name" 
GROUP BY cr.a, 
      cr.b, 
      cr.c 

那麼這Inser在程序中起作用...但是當我用原始版本還原它時,它沒有to_char ...它仍在工作......然後我保持它運行幾天...因爲它每天運行一次,它在前2天工作,然後在第三天停止工作... 我驗證了源表,並且每次運行此過程時,源表都不是空的... 它很混亂因爲becau如果我手動運行insert作爲查詢,它每次運行時都會起作用...但是如果我將其放入一個過程中,它會不時地起作用..

+0

什麼是cr.a'的'數據類型,CR' .b'和'cr.c'?以及'a','b'和'c'的數據類型是什麼? –

+0

難道你不總是提交? –

+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, 
[email protected] d 
WHERE d."a" = cr."column name" 
GROUP BY cr.a, 
cr.b, 
cr.c 
end; 
commit; 

沒有什麼能拿插入