2016-11-07 19 views
1

今、完全に透明であることは宿題です。最初の部分は、アイテムの割引価格を計算するストアドファンクションを作成することでした。アイテムIDに1つのパラメータを受け入れ、割引価格の値を返します。関数名はdiscount_priceです。これは私がやって、それは正常に動作します。関数内の関数の使い方

次の部分は次のとおりです。 "Order_Itemsテーブルのアイテムの総量を計算するitem_totalという名前のストアドファンクションを作成して呼び出すスクリプトを作成します(割引価格に数量を掛けた値)。アイテムIDに1つのパラメータを受け入れる必要があります。これは、練習2で作成したdiscount_price関数を使用し、そのアイテムの合計値を返す必要があります。

私の質問は、1つの関数の値を別の関数に渡すにはどうすればいいですか?基本的な構文が必要です。私の教科書には例はなく、どこでも明確な答えを見つけることはできません。

+0

これはどの言語ですか、sql? –

+0

これはoracle pl/sqlにあります – Itsonlyme

答えて

1

信じてthis linkには、あなたが探している例があります。 基本的には、通常はsql-plusまたはsql-developerで呼び出す方法と同じように呼び出します。例えば

returl_val := SUBSTR(string_in,4,1);

4

あなたは正確にあなたが文またはクエリからそれを呼び出すのと同じ方法で関数内の関数を呼び出すことができます。例えば:

create function innerFunction(a number) return number is 
begin 
    return a * 2; 
end; 

create function outerFunction(a number) return number is 
begin 
    return innerFunction(a) * 3; 
end; 

create function calledFunction(a number) return number is 
    n number; 
begin 
    n := outerFunction(a) * 5; 
    return n; 
end; 

SQL> select calledFunction(1) from dual; 

CALLEDFUNCTION(1) 
----------------- 
       30 

SQL> select calledFunction(calledFunction(calledFunction(1))) from dual; 

CALLEDFUNCTION(CALLEDFUNCTION(CALLEDFUNCTION(1))) 
------------------------------------------------- 
              27000 


SQL> declare 
    2 x number; 
    3 begin 
    4 x := calledFunction(1); 
    5 dbms_output.put_line(x); 
    6 end; 
    7/
30