1. 程式人生 > >PL/SQL函式操作例項與說明

PL/SQL函式操作例項與說明

PL/SQL函式與過程相同,不同之處在於函式有一個返回值。

建立函式

建立一個獨立函式可以使用CREATE FUNCTION語句建立。CREATE OR REPLACE PROCEDURE語句簡化語法如下:

CREATE[OR REPLACE]FUNCTION function_name
[(parameter_name [IN| OUT |IN OUT] type [,...])]RETURN return_datatype
{IS|AS}BEGIN< function_body >END[function_name];

這裡,

  • function-name 指定函式的名稱

  • [OR REPLACE] 選項允許修改現有的函式

  • 可選的引數列表中包含的名稱,模式和型別的引數。IN表示該值將被從外部傳遞和OUT表示該引數將被用於過程外面返回一個值

  • 函式必須包含一個return語句

  • RETURN 子句指定要在函式返回的資料型別

  • function-body 包含可執行部分

  • AS關鍵字來代替了IS關鍵字用於建立一個獨立的函式

建立一個獨立的函式視窗截圖:


建立一個獨立的函式的原始碼:

-- Created on 2018/3/29 by E.WANG 
--陣列求和函式
create or replace function SumOfVarray(nu in int_varray,sumV out int) return int 
is
temp int:=0;
begin
   for i in 1..nu.count loop
       temp:=temp+nu(i);
   end loop;
   sumV:=temp;
   return sumV;
end;

定義和呼叫PL/SQL函式截圖:


emp表中資料:


定義和呼叫PL/SQL函式例項原始碼:

-- Created on 2018/3/29 by E.WANG 
declare 
  --宣告陣列
  --用上一篇建立整型陣列型別
  numV int_varray;
  --用於儲存陣列求和結果
  res int;
  --用於儲存所有薪資求和結果
  salTotal number:=0;
  --宣告定義員工薪資求和函式
  funct ion getTotalSal return number
  is
  --用於儲存求和結果並返回
  salTotal number:=0;
  begin 
      select sum(sal) into salTotal from emp;
      return salTotal;
  end;
begin
  --初始化陣列
  numV:=int_varray(12,23,15,25,78);
  --呼叫函式SumOfVarray
  res:=SumOfVarray(numV,res);
  dbms_output.put_line('The Sum of int_varray(12,23,15,25,78): '|| res);
  --呼叫函式getTotalSal
  salTotal:=getTotalSal();
  dbms_output.put_line('The Sum of all emp''s salary : '|| salTotal);
  
end;

執行結果截圖: