在PL/pgSQL中解释分析出现错误:查询没有结果数据&的目标 [英] EXPLAIN ANALYZE within PL/pgSQL gives error: "query has no destination for result data"
本文介绍了在PL/pgSQL中解释分析出现错误:查询没有结果数据&的目标的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图了解PL/pgSQL函数中SELECT语句的查询计划,但不断收到错误。我的问题是:如何获取查询计划?
以下是再现该问题的简单案例。
有问题的表名为test_table。
CREATE TABLE test_table
(
name character varying,
id integer
);
函数如下:
DROP FUNCTION IF EXISTS test_function_1(INTEGER);
CREATE OR REPLACE FUNCTION test_function_1(inId INTEGER)
RETURNS TABLE(outName varchar)
AS
$$
BEGIN
-- is there a way to get the explain analyze output?
explain analyze select t.name from test_table t where t.id = inId;
-- return query select t.name from test_table t where t.id = inId;
END;
$$ LANGUAGE plpgsql;
当我运行时
select * from test_function_1(10);
我收到错误:
ERROR: query has no destination for result data
CONTEXT: PL/pgSQL function test_function_1(integer) line 3 at SQL statement
如果我取消注释已注释的部分,并注释掉EXPLAIN ANALYE,则该函数工作正常。
推荐答案
或者您可以将此更简单的形式与RETURN QUERY
一起使用:
CREATE OR REPLACE FUNCTION f_explain_analyze(int)
RETURNS SETOF text AS
$func$
BEGIN
RETURN QUERY
EXPLAIN ANALYZE SELECT * FROM foo WHERE v = $1;
END
$func$ LANGUAGE plpgsql;
呼叫:
SELECT * FROM f_explain_analyze(1);
适用于我的Postgres 9.3。
这篇关于在PL/pgSQL中解释分析出现错误:查询没有结果数据&的目标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文