提问人:Inbalza 提问时间:11/7/2023 更新时间:11/7/2023 访问量:32
从 postgres 函数中动态创建的变量中获取结果集
Get result set out of a dynamically created variable in a postgres function
问:
我正在尝试创建一种为数据库中任何表中的记录生成 INSERT 语句的方法。 我已经创建了一个函数,用于生成最终将返回所需结果集的动态代码。 但是,我被困在将此变量执行到结果集中的阶段。 此函数调用创建动态代码变量的另一个函数:
CREATE OR REPLACE FUNCTION dbo.script_insert3(
v_table_name character varying,
v_where_clause character varying)
RETURNS table(c1 text)
LANGUAGE 'plpgsql'
AS $BODY$
declare v_cmd varchar(4000);
BEGIN
select dbo.script_insert2(v_table_name,v_where_clause) into v_cmd;
return query execute v_cmd;
END;
$BODY$;
插入到v_cmd中的字符串为:
select 'insert into dbip(dbipserver,dbipsubnet) values(',dbo.quotenamemax(dbipserver),',',dbo.quotenamemax(dbipsubnet),');' from dbip ;
当我这样运行它时:
select dbo.script_insert3('dbip','');
我收到错误:
ERROR: Number of returned columns (5) does not match expected column count (1).structure of query does not match function result type
我尝试使用返回类型 - record、setof record、void...... 但我似乎无法得到我想要的结果,即:
insert into dbip(dbipserver,dbipsubnet) values( '10.0.0.0' , '255.255.255.0' );
insert into dbip(dbipserver,dbipsubnet) values( '10.0.1.0' , '255.255.255.0' );
请帮忙。
答: 暂无答案
评论