使用DBeaver在Postgresql函数中打印准备好的动态查询和结果集



我有一个函数,我在其中准备了动态查询,我希望在执行它之前在输出窗口中打印它。

注意:在下面的例子中,我只添加了一个简单的select语句来理解需求。

样品表:

create table t1
(
col1 int,
col2 text
);
insert into t1 values(1,'Table T1');
insert into t1 values(2,'Table T1');
create table t2
(
col1 int,
col2 text
); 
insert into t2 values(1,'Table T2');
insert into t2 values(2,'Table T2');

功能:

create or replace function fn_testing(tbl_Name text)
returns table(col1 int,col2 text) as 
$$
begin
return query execute 'select col1,col2 from '||tbl_name||'';
end;
$$
language plpgsql;

函数调用:

select * from fn_testing('t2'); 

我想在消息窗口中打印以下内容,结果窗口中也有结果集:

select col1,col2 from t1;

您可以将RAISE NOTICE用于消息。

CREATE OR REPLACE FUNCTION fn_testing
(_tbl_name name)
RETURNS TABLE
(col1 integer,
col2 text)
AS
$$
DECLARE
_query text;
BEGIN
_query := format('SELECT col1, col2 FROM %I;', _tbl_name);
RAISE NOTICE '%', _query;
RETURN QUERY EXECUTE _query;
END;
$$
LANGUAGE plpgsql;

注意:标识符有一个特殊的类型name。为了防止SQL注入或错误,您应该确保动态标识符被正确引用。您可以将format()%I一起使用。

最新更新