获取 Postgresql SELECT 查询中所有已用表的列表
Get a list of all used tables in a Postgresql SELECT query
有没有办法在不使用实际 SQL 解析器的情况下获取 Postgesql 中复杂 SELECT 查询中使用的所有表?版本将使用9.5及以上版本。
尝试:
create or replace function get_query_tables(p_query text) returns text[] language plpgsql as $$
declare
x xml;
begin
execute 'explain (format xml) ' || p_query into x;
return xpath('//explain:Relation-Name/text()', x, array[array['explain', 'http://www.postgresql.org/2009/explain']])::text[];
end $$;
select get_query_tables('your query here');
TableList:=TStringList.Create;
pgConnection1.GetTableNames(TableList,False);
有没有办法在不使用实际 SQL 解析器的情况下获取 Postgesql 中复杂 SELECT 查询中使用的所有表?版本将使用9.5及以上版本。
尝试:
create or replace function get_query_tables(p_query text) returns text[] language plpgsql as $$
declare
x xml;
begin
execute 'explain (format xml) ' || p_query into x;
return xpath('//explain:Relation-Name/text()', x, array[array['explain', 'http://www.postgresql.org/2009/explain']])::text[];
end $$;
select get_query_tables('your query here');
TableList:=TStringList.Create;
pgConnection1.GetTableNames(TableList,False);