我正在运行一个具有参数的函数: -要显示的列名 -执行搜索的列名 -我们正在寻找的价值
CREATE FUNCTION myFunction (column_1 varchar, column_2 varchar,
myvalue varchar) returns varchar as $$
select distinct $1 from mytable where $2 = $3;
$$ language 'sql';
结果始终为NULL。我尝试选择INTO,RETURN ...等,但是我仍然没有响应
我尝试了几种语法,但没有成功。 任何帮助,我们将不胜感激:-)
答案 0 :(得分:0)
您需要的是动态SQL。
/* EXAMPLE PREPARATION */
drop table if exists mytable;
create table mytable( a text, b text );
insert into mytable values ( 'aa', 'bb' );
select * from mytable;
a | b
----+----
aa | bb
(1 row)
/* CREATE FUNCTION */
create or replace function myFunction (
column_1 varchar,
column_2 varchar,
myvalue varchar)
returns varchar
as $$
declare
r1 text;
begin
execute 'select '|| quote_ident(column_1) || ' from mytable where '||
quote_ident(column_2) || ' = $1'
into r1
using myvalue;
return r1;
end;
$$ language plpgsql;
/* EXAMPLE USAGE AND OUTPUT */
select myfunction( 'b', 'a', 'aa' );
myfunction
------------
bb
(1 row)
注意: