使用 DBeaver 在 Postgresql 函数中打印带有结果集的准备好的动态查询
Print prepared dynamic query with result set in Postgresql function using DBeaver
我有一个函数,我在其中准备了动态查询,我想在执行它之前在输出 window 中打印它。
注意:在下面的示例中,我只是添加了简单的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');
我想在消息 window 中打印以下结果 window:
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
结合使用。