对于函数与存储过程,其调用方式不同。函数可以通过select or call 方式调用,而存储过程只能通过call 方式调用。以下具体举例说明。
1、创建调用函数和过程
函数:
create or replace function func01 returns integer as
cnt integer;
begin
select count(*) into cnt from t1;
return cnt;
end;
过程:
create or replace procedure proc01 as
cnt integer;
begin
select count(*) into cnt from t1;
exception
when others then
commit;
end;
包:
create or replace package pkg_test as
function func01() return integer;
procedure proc01;
end;
create or replace package body pkg_test as
procedure proc01 as
cnt integer;
begin
select count(*) into cnt from t1;
exception
when others then
commit;
end proc01;
function func01 returns integer as
cnt integer;
begin
select count(*) into cnt from t1;
return cnt;
end func01;
end;
2、具体调用例子
函数调用:可以用select or call
test=# select func01();
func01
--------
0
(1 row)
test=# call func01();
func01
--------
0
(1 row)
test=# call pkg_test.func01();
func01
--------
0
(1 row)
test=# select pkg_test.func01();
func01
--------
0
(1 row)
过程调用:只能用call
test=# call pkg_test.proc01();
CALL
test=# select pkg_test.proc01();
ERROR: pkg_test.proc01() is a procedure
LINE 1: select pkg_test.proc01();
^
HINT: To call a procedure, use CALL.
test=# call proc01();
CALL
test=# select proc01();
ERROR: proc01() is a procedure
LINE 1: select proc01();
^
HINT: To call a procedure, use CALL.
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




