如何在plpgsql中调用返回数据类型为void的函数a?

发布于 2025-01-11 04:54:04 字数 409 浏览 0 评论 0原文

create or replace function f1() //procedure should display 9
returns void
as $$
declare age int default 9; //variable declaration
begin                     
select age;      //prints 9
end;
$$ language plpgsql;
CREATE FUNCTION

我不断收到此错误

perform f1();
ERROR:  syntax error at or near "perform"
LINE 1: perform f1();
create or replace function f1() //procedure should display 9
returns void
as $
declare age int default 9; //variable declaration
begin                     
select age;      //prints 9
end;
$ language plpgsql;
CREATE FUNCTION

I keep receiving this error

perform f1();
ERROR:  syntax error at or near "perform"
LINE 1: perform f1();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

邮友 2025-01-18 04:54:04

perform 是一个 PL/pgSQL 语句。在普通 SQL 中,您只需使用 SELECT:

select f1();

请注意,编写的函数将不会“打印 9” - 它将导致错误,因为 SELECT 需要的结果存储在某个地方。在 PL/pgSQL 中,您需要 RAISE 语句来“打印”某些内容:

create or replace function f1()
returns void
as $
declare
  age int default 9; 
begin                     
  raise 'Age: ', age; -- this prints 9
end;
$ 
language plpgsql;

如果您希望函数“显示”某些内容,那么让函数返回可能更有意义> 结果:

create or replace function f1()
returns int
as $
declare
  age int default 9; 
begin                     
  return age;
end;
$ 
language plpgsql;

然后 select f1() 将“打印”9

perform is a PL/pgSQL statement. In plain SQL, you simply use SELECT:

select f1();

Note that the function as written, will not "print 9" - it will result in an error as the result of a SELECT needs to be stored somewhere. In PL/pgSQL you would need the RAISE statement to "print" something:

create or replace function f1()
returns void
as $
declare
  age int default 9; 
begin                     
  raise 'Age: ', age; -- this prints 9
end;
$ 
language plpgsql;

If you want a function to "display" something, it might make more sense to let the function return a result:

create or replace function f1()
returns int
as $
declare
  age int default 9; 
begin                     
  return age;
end;
$ 
language plpgsql;

Then select f1() will "print" 9

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文