暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

金仓数据库KingbaseES函数与存储过程调用方式的区别

数据猿 2023-03-23
1164

 

 

对于函数与存储过程,其调用方式不同。函数可以通过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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论