获取Postgresql SELECT查询中所有已使用表的列表

时间:2017-06-28 19:46:30

标签: postgresql delphi lazarus

有没有办法在不使用实际的SQL解析器的情况下获取Postgesql中复杂SELECT查询中使用的所有表?版本。将使用9.5及以上。

2 个答案:

答案 0 :(得分: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');

dbfiddle

答案 1 :(得分:-2)

TableList:=TStringList.Create; 
pgConnection1.GetTableNames(TableList,False);