嗨,我有一个需求,我正在通过aws红移存储过程执行查询。我需要有列名或表名才是动态的,类似于下面的示例.表详细信息](https://i.stack.imgur.com/Rg968.png),在这个表中,我想要执行id=3的查询,但是我希望在调用过程时从我的过程中发送表名(I)。创建表ro.test4(id整型);#应该执行
create or replace procedure ro.template()
language plpgsql
as $$
declare
i varchar(20);
name varchar(100);
begin
i='test4';
execute 'select(select query from rwr_dataops.test where id=3)'into name;
raise info '%',name;
end;
$$
call ro.template();我试过这个过程代码,但它不是working.Can,有人帮我这个。
create or replace procedure ro.template()
language plpgsql
as $$
declare
i varchar(20);
name varchar(100);
begin
i='test4';
execute 'select(select query from rwr_dataops.test where id=3)'into name;
raise info '%',name;
end;
$$
call ro.template();不工作的输出是Create ro.i(id整数);预期执行: Create ro.test4(id integer);#应该执行
发布于 2022-11-08 16:43:03
您需要两个EXECUTE语句-一个用于从测试表中获取SQL,另一个用于执行此SQL语句。
下面是一组快速的SQL演示:
create table test as select 'select \'fubar\';' as query;
create or replace procedure template()
language plpgsql
as $$
declare
name varchar(100);
command varchar(100);
begin
execute 'select query from test 'into command;
execute command into name;
raise info '%',name;
end;
$$;
call template();这是一种显示文本'fubar‘的四通八达的方式,但是您应该看看这是如何映射到您的情况的。
https://stackoverflow.com/questions/74360059
复制相似问题