2014-06-08 30 views
1

我有多個數據類型記錄在Oracle數據庫中排序。我試圖計算它們以獲得結果,我想在DISPLAY_ITEM上顯示它。如何使用Oracle表單中的後查詢計算多條記錄

我做了數據庫項目屬性:no;和數據類型:數字

我嘗試了數據塊查詢後觸發,那麼我寫的觸發器:

BEGIN 
    SELECT sal + allow1 + allow2 
    INTO :display_item1 
    FROM employees 
EXCEPTION 
    WHEN no_data_found THEN 
     :all_allow := 0;; 
END; 

我得到了錯誤

FRM-40735; POST-QUERY觸發器引發未處理的異常ORA-01422

回答

0

如果我正確地理解了你,你想有一個項目顯示錶中三個不同列的總數,這是我應該做的。爲列sal,allow1和allow2創建三個隱藏項目。對於隱藏項目,我指的是沒有指定畫布的數據庫項目(a.k.a.空畫布項目)。然後我創建一個無數據庫項目以顯示給用戶。然後,對於這個項目,我將Calculation Mode屬性設置爲Formula,將Formula屬性設置爲':my_block.sal +:my_block.allow1和my_block.allow2'。

或者,您可以使用Post-Query觸發器填充如果我們可以將其稱爲'公式'項目,但仍然需要將所有三列都歸爲單獨的項目。我不喜歡使用匯總項目,因爲它們在表單中的含義略有不同。

如果你不想這樣做,你也可以在from子句中構建你的塊,然後直接在sql中進行計算。

另一種解決方案應該是創建數據庫側視圖來執行計算並基於視圖而不是表創建表單塊。順便說一下,這不是一種創建表單以將表單本身與基礎表分開的不好方法。這使您可以自由地更改數據庫結構而不會使表單失效。

取決於您的需求的許多可能性,但我個人應該去配方項目。

1

您只能選擇1行到項目中。在這種情況下,ora-01422意味着你獲得了更多的1行。

觸發器後查詢觸發每一行,所以如果你想這發生的每一行只做該行的計數,而不是所有行一起。

如果你真的需要對所有這些行進行計數,你可以使用SUM函數左右。

相關問題