📜  PL SQL函数(1)

📅  最后修改于: 2023-12-03 15:18:35.914000             🧑  作者: Mango

PL/SQL 函数

PL/SQL 函数是一段可以重复使用的代码块,它接受输入参数、执行逻辑并返回一个值。它可以执行任何操作,从简单到复杂,包括数学运算、字符串操作、日期操作、数据查询等。

函数可以在 SQL 语句中直接使用,也可以在其他 PL/SQL 代码块中调用。

定义函数

函数定义通常包含以下部分:

  • 函数名:函数的名称,可以由字母、数字、下划线和美元符号组成,不能以数字开头,也不能和关键字重名。
  • 形参列表:函数接受的参数,形参可以有多个,每个形参包含名称和类型。
  • 返回类型:函数返回的结果类型,可以是基本类型或自定义类型。
  • 函数体:函数的具体实现,包括输入参数的处理、逻辑判断、数据查询等。

以下是一个简单的函数示例:

CREATE OR REPLACE FUNCTION calculate_salary (salary NUMBER, bonus NUMBER)
RETURN NUMBER
IS
   total_salary NUMBER;
BEGIN
   total_salary := salary + bonus;
   RETURN total_salary;
END;
/

这个函数名为 calculate_salary,接受两个参数 salarybonus,返回值为 NUMBER 类型。函数体中将输入参数相加并返回结果。

调用函数

调用函数时需要指定函数名和参数列表,如果函数有返回值则可以用变量接收。

以下是一个调用函数的示例:

DECLARE
   my_salary NUMBER;
BEGIN
   my_salary := calculate_salary(5000, 1000);
   DBMS_OUTPUT.PUT_LINE('My salary is ' || my_salary);
END;
/

这个代码块中调用了我们之前创建的函数 calculate_salary,传入参数 5000 和 1000,并将返回值赋值给变量 my_salary。最后输出变量的值。

PL/SQL 内置函数

PL/SQL 还提供了一些内置函数,可以方便地实现常见的操作,如字符串处理、日期处理等。以下是一些常用的内置函数:

  • SUBSTR:返回指定字符串的子串。
  • INSTR:返回指定字符串在目标字符串中的位置。
  • TO_CHAR:将日期类型转换成字符串。
  • TO_DATE:将字符串转换成日期类型。
  • NVL:如果第一个参数为 NULL,则返回第二个参数;否则返回第一个参数。

下面是一个使用内置函数的示例:

DECLARE
   my_str VARCHAR2(100) := 'Hello World';
   my_sub_str VARCHAR2(30);
   my_pos NUMBER;
BEGIN
   my_sub_str := SUBSTR(my_str, 1, 5); -- 返回 'Hello'
   my_pos := INSTR(my_str, 'World'); -- 返回 7
   DBMS_OUTPUT.PUT_LINE('Sub string: ' || my_sub_str);
   DBMS_OUTPUT.PUT_LINE('Position: ' || my_pos);
END;
/

这个程序块中使用了 SUBSTR 函数和 INSTR 函数,分别返回了字符串的子串和字符串中指定子串的位置。

总结

PL/SQL 函数是代码重用的重要手段,它可以封装复杂的逻辑并让其可以在不同的地方重复利用。函数定义包含函数名、形参列表、返回类型和函数体,可以在 SQL 语句或其他 PL/SQL 代码中调用。此外,PL/SQL 还提供了一系列内置函数,可以方便地进行常见的操作。