機能
関数のパラメーターは入力パラメーターにあり、戻り値は出力です
構文:
作成 [ または[置換] 機能の関数名を (1つのタイプ1のパラメータ、タイプ2のパラメータ2、...) を返す戻り値の型 IS / AS [ カスタム変数を] 開始 - 実行する文が 返す結果; [ 例外 -例外処理を ] 終了 ;
*** 1.関数のパラメーターはモードのみであり、
2で省略できます。関数が宣言されている場合、returnと戻り値の型を使用する必要があります。returnの戻り値の型
は、長さを定義せずに型を通知するだけでよいことに注意してください。:Return varchar2;
variable:data type varchar2(30)
3.関数の結果は、returnを介して返される必要があります。つまり、return結果をbeginで使用します。
パラメータ機能なし:
- リターンのHelloWorldという機能書く - その後、データベース、コンパイルに格納され、実行 作成 または 置き換える 機能のsayHello リターン VARCHAR2を IS - 変数の宣言は、.... 始まる - ロジックコード - 結果を返すために使用リターンを 返します " 世界のHello " ; エンド; - オラクルの機能:TO_CHAR()TO_DATE() - 関数呼び出し:SQLステートメントを呼び出す SELECTのsayHello()をからデュアル;
パラメータ化された関数:
- 従業員の数、従業員(給与+ボーナス)の収入の年次計算* 12に従って 作成 または 置き換える 機能 getYealSal(emp.empno ENO %型) を返す ナンバーは IS v_sal emp.sal %;タイプの v_commのemp.commの%タイプの; 開始 SELECT SAL、COMM INTO v_sal、v_comm から EMP WHERE EMPNO = ENO; IF v_commはIS NULL 次いで 戻り v_sal * 12である。 他の リターン (v_sal + v_comm)* 12 ; エンド IF ; エンド; - 呼び出し SELECT E. *、GetYealSal(e.empno)年収から EMP E;
ストアドプロシージャと関数の違い
1)キーワードが異なります:ストアドプロシージャ:プロシージャ、関数:関数 2)ストアドプロシージャのパラメーターは、入力パラメーター、出力パラメーターで使用できます。関数のすべてのパラメーターは入力パラメーター内にあります 3 )ストアドプロシージャは戻り値の型を決定しませんが、 outパラメータを使用して結果を返すことができます。関数は戻り値のタイプを判別する必要があります。returnを使用して結果を返します 。4)ストアドプロシージャはpl / sqlブロックまたはexecで呼び出され、関数はsqlステートメントでのみ呼び出すことができます