当前位置:  开发笔记 > 数据库 > 正文

如何将文本参数传递给`IN`运算符的存储函数

如何解决《如何将文本参数传递给`IN`运算符的存储函数》经验,为你挑选了1个好方法。

我需要从架构中获取表名,除了一些表

CREATE OR REPLACE FUNCTION  func(unnecessary_tables TEXT)
returns void
as $$
begin
      EXECUTE 'SELECT table_name FROM information_schema.tables   
      WHERE 
      table_schema=''public''
      AND 
      table_name NOT IN( $1 )
      ' USING unnecessary_tables

      --here execute retrieved result, etc ...

end;
$$language plpgsql

然后调用函数

select func('table1'',''table2');

这不是工作和报酬的结果 table1table2也.

问题是:如何将文本参数传递给存储函数,对于IN运算符?



1> Clodoaldo Ne..:

传入文本数组而不是文本:

create or replace function func(unnecessary_tables text[])
returns void as $$
begin
    select table_name
    from information_schema.tables   
    where
        table_schema = 'public'
        and
        not(table_name = any($1))
    ;
end;
$$language plpgsql    

称之为:

select func(array['t1','t2']::text[]);

BTW上面的代码可以是普通的SQL而不是PL/pgSQL

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有