如何解决查询没有结果数据的目的地 pg tap postgres sql
我有一个简单的单元测试要在 pgtab https://pgtap.org/documentation.html#is 中运行,如下所示
BEGIN;
SELECT plan(12);
-- Run the tests.
do
$$
declare
v_expected varchar(100);;
begin
SELECT has_table('unit_test_expected_results');
end;
$$;
-- Finish the tests and clean up.
SELECT * FROM finish();
ROLLBACK;
END
当我在 SELECT has_table('unit_test_expected_results');
和 begin
中写入 end
时,我面临以下错误
[2021-06-01 23:50:58] [42601] ERROR: query has no destination for result data
[2021-06-01 23:50:58] Hint: If you want to discard the results of a SELECT,use PERFORM instead.
[2021-06-01 23:50:58] Where: PL/pgsql function inline_code_block line 5 at sql statement
任何帮助将不胜感激
这是来自 pgtab 扩展的函数
create function has_table(name,text) returns text
language sql
as
$$
SELECT ok( _rexists( '{r,p}'::char[],$1 ),$2 );
$$;
alter function has_table(name,text) owner to postgres;
如果我写下面的代码
begin
SELECT has_table('unit_test_expected_results') INTO v_expected;
end;
OR
begin
PERFORM has_table('unit_test_expected_results');
end;
这有效,但输出窗口中没有结果,但是,如果我在开始和结束之外写,一切正常
解决方法
遇到此问题的任何人都可以参考此处https://www.postgresql.org/docs/9.5/plpgsql-control-structures.html
CREATE or REPLACE FUNCTION get_test() RETURNS SETOF integer AS
$BODY$
BEGIN
RETURN QUERY SELECT has_table('unit_test_expected_results');
END;
$BODY$
LANGUAGE plpgsql;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。