程序(未知)不存在 PostgreSQL

Procedure (unknown) does not exist PostgreSQL

我是 PostgreSQL 的新手,正在尝试了解 PostgreSQL 的存储过程。这是我遵循的步骤。

  1. 已安装 pgAdmin4
  2. 创建数据库
  3. 在 public 架构下创建了 table“用户”
  4. 创建了过程“GetUserByEmail”
CREATE OR REPLACE PROCEDURE GetUserByEmail  
(      
   Email Varchar(100)
)

LANGUAGE plpgsql AS  
$$  
BEGIN         

 Select * from public."Users" where "Email" = Email
END  
$$;  

从查询工具调用它时,出现错误。

CALL public.GetUserByEmail('d@d.com')

ERROR: procedure public.getuserbyemail(unknown) does not exist LINE 1: CALL public.GetUserByEmail('d@d.com')

^ HINT: No procedure matches the given name and argument types. You might need to add explicit type casts. SQL state: 42883 Character: 6

检查权限,用户有执行权限

尝试了不同的方法,但不确定哪里出了问题。

Are PostgreSQL column names case-sensitive?
如果你 create table "users"(a int...) 那么你每次 select/update/delete "users" table.

都会坚持 "users"

你可以轻松模仿38.5.9. SQL Functions Returning Sets(https://www.postgresql.org/docs/current/xfunc-sql.html)

CREATE FUNCTION getusers(text) RETURNS SETOF "users" AS $$
    SELECT * FROM "users" WHERE email = ;
$$ LANGUAGE SQL;

SELECT * FROM getusers('hi') AS t1;

stored procedure versus function
demo