函数:
与过程相似,遵循了相同的规则。
参数传递:只能带有in参数,不能使用out, in out 参数
函数的主要特性是必须返回一个值。
语法:
CREATE [OR REPLACE] FUNCTION function_name (参数)
RETURN datatype
IS | AS
[PRAGMA AUTONOMOUS_TRANACTION;] --声明自主事务处理。
[本地变量声明]
BEGIN
执行语句部分
[EXCEPTION]
错误处理部分
END[name];
/
返回值:
定义函数的时候必须使用RETURN datatype 子句,表示函数要返回的数据类型。
在函数体中的任何地方,都可以使用 RETURN <表达式>返回值,类型要和定义中的相同。
CREATE OR REPLACE
FUNCTION my_func
RETURN varchar2
As
Begin
Return ‘HELLO, WORLD’;
END;
/
调用函数:
用户必须要获取返回值,所以调用时,要声明一个局域变量:
set serveroutput on
declare
l_str varchar2(100) := null;
begin
l_str := my_func;
dbms_output.put_line(l_str);
end;
/
也可以将函数用作其他过程以及函数的IN参数。
Create or replace
Procedure show_it(p varchar2) as
Begin
Dbms_output.put_line(p);
End;
/
exec show_it(my_func);
练习:
编写一个函数ITE,实现:boolean expression ? true_value: false_value
输入一个表达式expression, IF正确,THEN输出true_value;ELSE,输出false_value
分析:3个in 参数,一个boolean, 2个varchar2
create or replace
function ite(
p_expression Boolean,
p_true varchar2,
p_false varchar2)
return varchar2
as
begin
if p_expression then
return p_true;
end if;
return p_false;
end;
/
exec dbms_output.put_line(ite(1=2, ‘Equal’,’Not equal’));