2011-09-09 53 views
-6

下面的問題解決方案是否正確存儲PL/SQL的位置。用於存儲PL/SQL塊的地方

您想要創建計算客戶訂單折扣的PL/SQL塊代碼。 - 此代碼將從幾個地方調用,但僅限於程序單元ORDERTOTAL內。 什麼是存儲計算折扣的代碼的最合適的位置?

A. A stored procedure on the server. 
B. A block of code in PL/SQL library. 
C. A standalone procedure on the client machine. 
D. A block of code in the body of the program unit ORDERTOTAL. 
E. A local subprogram defined within the program unit ORDERTOTAL. 

ANSWER: E 
+1

我知道,這君子乎投西隧的基礎上,所以我謂謂糾正NXT時間 – parmanand

+0

Whts正確的答案,是E正確,bcoz我有一個還 – parmanand

+4

另一個-1混亂「WHT」,「 tht「,」nxt「和」bcoz「。 –

回答

2

作爲Ranzo notes其他幾個答案也是合理的。那麼,爲什麼E的正確答案是?因爲這個問題要求代碼的最合適的位置

讓我們來分解它。

邏輯需要從幾個地方調用。因此有必要將它定義爲自己的功能(因爲我們不想重複相同的代碼)。

與此同時,客戶折扣邏輯僅從ORDERTOTAL程序單元調用。因此,我們不希望將其作爲獨立程序或打包函數公開,這可以由其他程序調用。這排除了AB

所以最好的地方是E,ORDERTOTAL程序的聲明部分。喜歡的東西:

create procedure ordertotal 
    (custid in pls_integer 
     , orderid in pls_integer) 
is 
    ln_running_total number; 
    .... 
    function calc_discount 
     (custid in pls_integer) 
     return number 
    is 
    .... 

如果現在的OrderTotal是一個打包的過程中,我們將有選擇地使CALC_DISCOUNT()私有函數(在體內定義,但在規範中沒有宣佈)。但總的來說,儘可能保持範圍儘可能小,除非有合理的機會將來其他程序將使用該功能。

爲了記錄在案,Ç是錯誤的,因爲在客戶端上宣佈的東西是不是服務器訪問,d是錯誤的,因爲它不會編譯。


在尋找這個問題的文本版本,我發現了一個PDF版本here這給正確答案爲一個。 8-)另一個提供盜版考試的網站說正確的答案是B。所以好消息是,那些認爲自己可以通過簡單地學習答案就可以破解測試的人將會失敗。

0

除「C」之外的一切都是合理的。這些Oracle測試已經進入細節,努力讓它們變得更加困難。我知道有幾位不能通過的優秀Oracle DBA,因爲他們不是關於概念,而是專業術語和技巧。

E是最好的答案,它本地化調用程序中的子例程。關鍵詞是本地的。

當然,它也存儲在數據庫服務器(A)上,它實際上是一個代碼塊(B--儘管「庫」不是PL/SQL說的),它實際上是一個ORDERTOTAL(D)中的代碼塊。

祝您在測試中好運,並確保專注於概念。

+1

「庫」是一種Oracle Forms概念,其中常見的Forms PL/SQL過程存儲在單獨的文件中。 –

+0

@Gary - 我很確定它使用庫來表示「PL/SQL包」 – APC

+0

實際上只有A和E是可信的。 – APC