PostgreSQL:没有与给定名称和参数类型匹配的函数
我有以下程序:PostgreSQL:没有与给定名称和参数类型匹配的函数,sql,postgresql,plpgsql,procedure,Sql,Postgresql,Plpgsql,Procedure,我有以下程序: DROP FUNCTION presAdress(); CREATE FUNCTION presadress() RETURNS VARCHAR(100) AS $$ DECLARE studioName text; BEGIN RETURN ( SELECT address AS pres_address FROM MovieExec WHERE cert# IN ( SELECT presC# FR
DROP FUNCTION presAdress();
CREATE FUNCTION presadress() RETURNS VARCHAR(100) AS $$
DECLARE studioName text;
BEGIN
RETURN (
SELECT address AS pres_address
FROM MovieExec
WHERE cert# IN (
SELECT presC#
FROM Studio
WHERE name = studioName)
);
END;
$$ LANGUAGE plpgsql;
select presadress('Paramount');
我尝试运行以下过程:
DROP FUNCTION presAdress();
CREATE FUNCTION presadress() RETURNS VARCHAR(100) AS $$
DECLARE studioName text;
BEGIN
RETURN (
SELECT address AS pres_address
FROM MovieExec
WHERE cert# IN (
SELECT presC#
FROM Studio
WHERE name = studioName)
);
END;
$$ LANGUAGE plpgsql;
select presadress('Paramount');
但我收到以下错误消息:
ERROR: function presadress(text) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Character: 294
我怀疑这是因为该过程的in参数存在某种错误,但我无法找到解决方案。我想您需要一个更像这样的声明:
CREATE FUNCTION presadress (v_studioName text)
RETURNS VARCHAR(100) AS $$
BEGIN
RETURN(SELECT address AS pres_address
FROM MovieExec
WHERE cert# IN (SELECT presC#
FROM Studio
WHERE name = v_studioName)
);
END;
$$ LANGUAGE plpgsql;
使用函数参数,如@Gordon演示,但根本不需要plpgsql。并且查询可以简化(更短、更快): 函数波动性可以是稳定的 相关的: