一、函数
1、有返回值
2、存储在 数据库 中
3、能够作为表达式的一部分被调用
二、过程与函数的比较
过程 函数
作为一个独立的PL/SQL 语句执行 作为表达式的一部分调用
在规格说明中不包含 RETURN子句 必须在规格说明中包含RETURN子句
可以返回很多值 必须返回单个值
不用包含 RETURN 语句 必须包含至少一条RETURN 语句
总结:
主要用途:作为SQL表达式的一部分,如 select max(id) where dual;
返回多个数值:
SQL PLUS相关的命令:
1、有返回值
2、存储在 数据库 中
3、能够作为表达式的一部分被调用
二、过程与函数的比较
过程 函数
作为一个独立的PL/SQL 语句执行 作为表达式的一部分调用
在规格说明中不包含 RETURN子句 必须在规格说明中包含RETURN子句
可以返回很多值 必须返回单个值
不用包含 RETURN 语句 必须包含至少一条RETURN 语句
总结:
主要用途:作为SQL表达式的一部分,如 select max(id) where dual;
只能返回一个值,想要返回多个值,则必须传入多个out模式参数
只返回一个数值:
create or replace function getStr(str varchar)
return varchar
as
begin
return str;
end;
----------------
declare
str varchar(20);
begin
dbms_output.put_line(getStr('abc'));
select getStr('abc') into str from dual;
dbms_output.put_line(str);
end;
返回多个数值:
create or replace function fun_test(stuId in T_SCORE.STU_ID%type, score out T_SCORE.EXAM_SCORE%type)
return varchar
is
stu_name T_STU.STU_NAME%type;
begin
select max(T_SCORE.EXAM_SCORE) into score from T_SCORE where T_SCORE.STU_ID = stuId;
select T_STU.STU_NAME into stu_name from T_STU where T_STU.STU_ID = stuId;
return stu_name;
end fun_test;
------------------------
declare
stu_id varchar(5);
score number(5,2);
stu_name varchar(8);
begin
stu_id := '1000';
dbms_output.put_line(fun_test(stu_id,score));
dbms_output.put_line(score);
end;
SQL PLUS相关的命令:
--3.常用语句
--显示错误语句 , fun_test为函数名
show errors function fun_test;
--删除函数,
drop function fun_test;