Hasura-Query没有结果数据的目标 [英] Hasura - query has no destination for result data

查看:18
本文介绍了Hasura-Query没有结果数据的目标的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Hasura中,我正在尝试编写一个基于plpgsql的函数,该函数应该返回t_Documents。该函数应该根据它应该运行适当的SQL(使用IF条件检查)的参数值接受各种可选参数,并返回记录。这是我的目标。

我已经从没有参数的简单函数开始,该函数在Hasura中成功创建和跟踪,但当尝试查询它时抛出"query has no destination for result data"

我们非常感谢为实现这一目标而提供的任何帮助

CREATE OR REPLACE FUNCTION dms.fngetdocs()
 RETURNS SETOF dms.t_documents
 LANGUAGE plpgsql
 STABLE
AS $function$
BEGIN
SELECT *
    FROM dms.t_documents;
END;    
$function$

推荐答案

每条SQL语句返回行(如SELECT,但也有INSERTWITHRETURNING等)。)结果数据必须有一个目标。这就是错误消息告诉您的。要么赋值变量,要么返回给调用方。若要放弃结果,请使用PERFORM而不是SELECT。请参阅:

但您显然希望返回行。您的PL/pgSQL函数的工作方式如下:

CREATE OR REPLACE FUNCTION dms.fngetdocs()
  RETURNS SETOF dms.t_documents
  LANGUAGE plpgsql STABLE PARALLEL SAFE AS
$func$
BEGIN
   RETURN QUERY
   SELECT * FROM dms.t_documents;
END
$func$

请参阅:

当然,

没有什么意义。您只需直接使用SELECT * FROM dms.t_documents;,而不是调用该函数。

或使用更简单的SQL函数,其中会自动返回SELECT的结果:

CREATE OR REPLACE FUNCTION dms.fngetdocs()
  RETURNS SETOF dms.t_documents
  LANGUAGE sql STABLE PARALLEL SAFE AS
$func$
SELECT * FROM dms.t_documents;
$func$;

See the manual about the added PARALLEL SAFE.

这篇关于Hasura-Query没有结果数据的目标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆