如何在这种情况下使用declare和concat下的语句执行

时间:2015-07-27 08:56:06

标签: postgresql dynamic-sql

我想创建一个函数,如果p_title不为null,那么sql3必须与sql1联系,否则只有sql3正在运行。

create or replace function view(p_title text)
returns table (vbookid integer, vtitle, vpublisher) as
$body$
declare sql1 text := 'WHERE title = p_title';
declare sql3 text := 'select book_id, title, publisher from book';


begin    

    if(nullif(p_title,'') <> '') then
        execute sql3 || sql1 || order by title;
    else
        execute sql3 || order by title;
    end if;

end;

我尝试使用prepare更改声明declare,但它在sql1无法使用。

0 个答案:

没有答案