在函数调用中引用问题

时间:2017-02-21 15:53:04

标签: postgresql function plpgsql

我创建了以下函数来验证数据库中的客户端:

create or replace function altaClient(p_nombre cliente.nombre%type,p_repcod cliente.repcod%type,p_limcred cliente.limcred%type)
RETURNS varchar as $$
declare

begin
    if p_nombre in (select nombre from cliente) THEN
        RAISE 'El cliente ya está registrado';
    end if;

    insert into cliente (cliecod,nombre,repcod,limcred)
    values (nextval('cliecod'),p_nombre,p_repcod,p_limcred);
    return 'El cliente se ha dado de alta correctamente';

    if p_repcod not in (select * from cliente where repcod=p_repcod) THEN
        RAISE 'El representant no existeix';
    end if;
end;
$$ LANGUAGE plpgsql;

但是当我尝试使用它时,我收到了这个错误:

training=> select altaClient("Samuel S.A",101,20000.2);
ERROR:  column "Samuel S.A" does not exist
LINE 1: select altaClient("Samuel S.A",101,20000.2);

知道错误是什么意思吗?我读了一下,似乎我必须在函数中使用execute,但我不确定。

1 个答案:

答案 0 :(得分:0)

在PostgreSQL中,'和"。 "用于区分大小写的对象名称(表,字段和其他)。请将您的查询更改为:

 select altaClient('Samuel S.A',101,20000.2);