0
我试图创建带有级联值结果的函数。POSTGRESQL:带有Concat值的函数结果
见下图:
CREATE OR REPLACE FUNCTION select_name()
RETURNS TABLE(name text) AS
$BODY$
BEGIN
RETURN QUERY
select
cast(first_name as text) ||' ' || cast(middle_name as text) ||' ' || cast(last_name as text) as name
from table_name;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
但是在查询
select * from select_name();
它显示错误:
ERROR: relation "select_name" does not exist
LINE 8: select * from select_name
^
********** Error **********
ERROR: relation "select_name" does not exist
SQL state: 42P01
Character: 159
我卡在这里。 请帮忙。
您的函数适用于我......错误消息看起来像括号在查询中被忽略。我对“LINE 8”和“Character:159”也很怀疑。也许你省略了一些可以澄清问题的细节。顺便说一下:''firstname'|| NULL IS NULL'。 –
我同意Laurenz:它似乎忘记了使用'()'并且只是从select_name运行select *。不相关的,但是:函数中的表达式可以简化为'select concat_ws('',first_name,middle_name,last_name)作为name''来正确处理'null'值(Plus:你不需要PL/pgSQL ,一个普通的SQL函数就足够了) –
谢谢大家。 :)我再次审查,并做了一些调整,它的工作!我用这个:'作为名字'将(名字首字母||''||中间名||''||姓氏作为文本)强制转换 – fLen