首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 11g 函數調用四大語法全解析:位置、命名、混合與默認值參數傳遞

     編輯:Oracle 資料庫基礎

測試函數定義

CREATE OR REPLACE FUNCTION add_three_numbers (
  a NUMBER := 0,
  b NUMBER := 0,
  c NUMBER := 0
) RETURN NUMBER IS
BEGIN
  RETURN a + b + c;
END add_three_numbers;
/

三個參數均有默認值 0,支持靈活調用。

四種調用語法

1. 位置表示法

按參數定義順序傳值,不可跳過中間參數。

BEGIN
  DBMS_OUTPUT.PUT_LINE(add_three_numbers(2, 4, 5));  -- 11
END;
/

2. 命名表示法

指定參數名 名稱 => 值,順序任意,可跳過有默認值的參數。

BEGIN
  DBMS_OUTPUT.PUT_LINE(add_three_numbers(b => 3, a => 4, c => 2));  -- 9
END;
/

3. 混合表示法

前部用位置,後部用命名。規則:位置表示法必須在命名表示法之前。

BEGIN
  DBMS_OUTPUT.PUT_LINE(add_three_numbers(3, b => 4, c => 2));  -- 9
END;
/

4. 默認值/排除表示法

僅傳遞部分參數,其餘使用默認值。

BEGIN
  DBMS_OUTPUT.PUT_LINE(add_three_numbers(12, c => 2));  -- a=12, b=0(默認), c=2 => 14
END;
/

SQL 語句中調用函數

在 SQL 中僅支持位置表示法與混合表示法,不支持純命名表示法。

SELECT add_three_numbers(3, b => 4, c => 2) FROM DUAL;  -- 9

最佳實踐建議

場景推薦語法理由
參數少、順序固定位置表示法代碼簡潔,可讀性高
參數多、常用默認值命名/混合表示法自文檔化,避免傳錯順序
SQL 查詢中調用位置或混合語法限制
動態構建調用命名表示法便於程式化拼接

常見錯誤避坑

  • 混合表示法順序顛倒:add_three_numbers(a => 1, 2) → PLS-00306。
  • SQL 中使用純命名:SELECT add_three_numbers(a => 1) FROM DUAL → ORA-00907。
  • OUT/IN OUT 參數:函數不支持 OUT 參數,需改用存儲過程。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved