VIDTAKER.COM

Q&A

Oracleの関数を1つのパラメータをオプションにする方法 - Oracle Databaseは、回答


こんにちは

私はoracel関数で省略可能なパラメータを作成する
例えば、これは私の関数である

関数をsum1(No1の数は、数のNO2の、結果を数)を作成する

始める
結果:= No1の+ NO2の。
DBMS一O('No1の合計とNO2は| | Resutlが)です。
最後に。
/
変数の数。

今私はこのように、それをコールする

コールsum1(10、:);

私は平均して、私はNULLとしてNO2のパラメータを残して、望んでも結果を出す
どのようにすべきiは
私に最高の結果を与える
uのみんなに感謝



3 Replies

1)

なぜあなたはそのようなそれを呼び出すことはありません
  1. sum1(5,null,:a)
  2.  

あなたがそのような呼び出しを行うことができない場合は、そのようにしてください

  1. create function sum1(No1 in number,No2 in number default null,Result out number)
  2. is
  3. begin
  4. Result:=No1+No2;
  5. dbms_output.put_line('The sum of No1 and No2 is ||Resutl);
  6. end;
  7. /
  8.  
  1. ....
  2. begin
  3. ..
  4. call sum1(No1=>10,Result=>:a);
  5. ...
  6. end;
  7.  

ところで、この関数では、()はNULL +整数= nullの動作しません。

2)

Rohullah、

関数が3つの主要エラーとあなたの"デフォルトの"問題からかなりの欠陥を脇にあります:

1は。)関数は常に(それ以外の場合は、手順では、です)の戻り値を持つ必要があります

2は)はNULLにNULLのオペランドの結果とすべての演算(この手段は、NULLにNO2の設定した場合 - デフォルトでは、ただ1つのパラメータを持つすべての呼び出しはNULLになります
つまり、あなたのNO2のをデフォルトにして - パラメータを0に(番号0)。

3、)が一OUTPUTにお電話で行方不明見積りと誤植さ - パッケージ

欠陥:

それは文法的に関数で"売り切れ" - パラメータを持って修正されますが、それは広く、非常に粗末なプログラミングスタイルなどの構成要素を使用すると見なされます。
これは、"副作用のプログラミング"と呼ばれ、必ずしもあなたの評判を上げるだろう...

この関数のための私の推奨事項:

  1. CREATE OR REPLACE function sum1
  2.               ( No1 in number
  3.                ,No2 in number  default 0
  4.               ) return number
  5. is
  6.    vResult number := 0;
  7. begin
  8.    vResult := No1 + No2;
  9.    dbms_output.put_line('The sum of No1 and No2 is ' || vResult);
  10.    return vResult;
  11. end sum1;
  12. /
  13.  
あなたは本当に(私が想定DBMS_OUTPUTをを必要としない場合、または、のみがテスト用):

  1. CREATE OR REPLACE function sum1
  2.               ( No1 in number
  3.                ,No2 in number  default 0
  4.               ) return number
  5. is
  6. begin return No1 + No2; end sum1;
  7. /
  8.  

3)

あなたは100万時間に感謝します。