为什么选择一个计算并获得结果,但选择具有相同计算的函数却无法获得结果?

时间:2019-07-18 17:03:21

标签: postgresql plpgsql

在plpgsql中,我正在尝试测试计算。要在sql编辑器中查看结果,我可以执行以下操作:

select 3 * 5;

然后,当我在编辑器中突出显示代码并运行查询时,我得到的结果是“列”?的值为15。

但是如果创建这样的函数:

CREATE OR REPLACE FUNCTION do_something() RETURNS VOID AS $$
BEGIN SELECT 3 * 5; END;
$$ LANGUAGE PLPGSQL;

,然后突出显示并运行查询:

SELECT do_something();

我收到一条错误消息,说“查询没有结果数据的目的地”。

我只希望能够测试代码块并查看结果,即使它与表无关。最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

您的第一个错误是该函数声明为不返回任何内容return void。如果要返回整数,则需要将其更改为return int

此外,在PL / pgSQL中,您需要使用return返回值,而不是SELECT语句。

CREATE OR REPLACE FUNCTION do_something() 
  RETURNS int 
AS $$
BEGIN 
  return 3 * 5; 
END;
$$ LANGUAGE PLPGSQL;

请注意,对于像language SQL函数这样的简单计算,由于PL / pgSQL确实有一些开销,因此效率更高。

CREATE OR REPLACE FUNCTION do_something() 
  RETURNS int 
AS $$
  select 3 * 5; 
$$ LANGUAGE sql;