2011-09-15 53 views
1
DELETE UserDB..UserAccount 
    FROM UserDB..UserAccount A, CustDB..ETS_Profile B 
WHERE A.UserId = B.User_Id 
    and B.Category = 'Customer' 
    AND B.Sub_Category = 'Teir' 
    and B.Item_Name = 'CUSTODIAN' 

上面是一個Sybase查詢,效果很好。我創建了userDB的處理程序和甲骨文Sybase查詢在Oracle中不起作用

執行這個查詢在oracle中我得到的錯誤,如果我給查詢如下

DELETE UserAccount 
    FROM UserAccount A,CustDB.ETS_Profile B 
where A.UserId = B.User_Id 
    and B.Category = 'Customer' 
    and B.Sub_Category = 'Teir' 
    and B.Item_Name = 'CUSTODIAN'; 
+0

這裏有一些語法錯誤(非閉字符串文字,名稱解析中的雙點... – Benoit

+0

..在Sybase中是從DB引用表的方式。但在Oracle中,我只給出了單點 – user472625

+0

啊,好的。不知道。 – Benoit

回答

4

你或許應該制定如下查詢:

DELETE FROM UserAccount A 
WHERE EXISTS 
     (SELECT NULL 
      FROM CustDB.Ets_Profile B 
      WHERE B.user_id = A.UserId 
      AND B.Category = 'Customer' 
      AND B.Sub_Category = 'Teir' 
      AND B.Item_Name = 'CUSTODIAN' 
     ); 
+0

謝謝。SELECT NULL暗示 – user472625

+0

@peter:謝謝你的回覆。請給我解釋一下這個問題。 – user472625

+0

@ user472625:當你使用'WHERE EXISTS'時,檢查一行是否存在,內容無關緊要。因此,無論你在子查詢中選擇什麼都不重要,「SELECT NULL」是一種常用的方法,但你可以使用'SELECT B. *'或'SELECT Category,'hello world',SYSDATE FROM CustDB.Ets_profile B '... – Benoit