如何在PostgreSQL中执行动态查询?

时间:2014-06-14 06:39:04

标签: postgresql

我正在尝试使用PostgreSQL执行动态查询。我有一个带有三个参数的函数,需要用一些变量后缀这些参数(以生成视图名称),并需要从该变量(视图)中检索行并返回结果。

示例

create or replace function testing(abc varchar,def varchar,ghi varchar)
returns setof record as
$BODY$
Declare
      temptable1 varchar :='temp1_';
      temptable2 varchar :='temp2_';
      viewname varchar :='view_';
Body
      temptable1 := temptable1||abc;
      temptable2 := temptable2||def;
      viewname := viewname||ghi;

      execute 'Drop table if exists'||temptable1;
      execute 'Drop table if exists'||temptable2;

      WITH cm
      AS
      (
      SELECT "ssno","rlno",
           DENSE_RANK() OVER(Partition by "ssno" Order By "rlno"     )FoundIn
      From viewname;
      )
    SELECT DISTINCT * INTO temptable1
    FROM cm
    WHERE FoundIn > 1;

    SELECT DISTINCT cr."ssno", cdr."rlno"
        INTO temptable2
        FROM temptable1 l1
        INNER JOIN viewname cr on l1."rlno" = cr."rlno"
        ORDER BY "rlno";

    /* Need to result should be display for below query */
    SELECT DISTINCT  cr.ssno AS Nos, cr.rlno, FoundIn,cr.Name, cr.Address,
from temptable1 l1
inner join viewname cr on l1.rlno = cr.rlno
order by "rlno"

end;
$BODY$
Language plpgsql;

0 个答案:

没有答案