C# NpgSql调用函数/例程

C# NpgSql调用函数/例程,c#,postgresql,npgsql,C#,Postgresql,Npgsql,给定以下Postgresql例程: CREATE OR REPLACE FUNCTION checkemailexists (emailaddress text) RETURNS boolean LANGUAGE plpgsql AS $$ #print_strict_params on DECLARE existsCount int; BEGIN SELECT count(*) INTO STRICT existsCount FROM usercontacts

给定以下Postgresql例程:

CREATE OR REPLACE FUNCTION checkemailexists (emailaddress text) RETURNS boolean
    LANGUAGE plpgsql
AS $$
#print_strict_params on
DECLARE
existsCount int;
BEGIN
    SELECT count(*) INTO STRICT existsCount
        FROM usercontacts WHERE usercontacts.contactaddress = emailAddress;
    IF existsCount > 0 THEN RETURN TRUE;
    ELSE RETURN FALSE;
    END IF;
END
$$
以及以下.NET(Npgsql)块:

我一直得到以下错误

postgresception:42883:函数checkemailexists(emailAddress=>text)不存在

我完全是一个博士后新手,在搜索相关答案时我并不是很成功

你能帮我理解为什么我试图调用这个函数时找不到它吗

选择版本()

x86_64-pc-linux-gnu上的PostgreSQL 9.5.5,由gcc(Ubuntu 5.3.1-14ubuntu2)5.3.1 20160413编译,64位

.NET核心

Npgsql 3.1.9


谢谢大家!

欢迎。。。区分大小写是当今流行的短语


电子邮件地址!=电子邮件地址。。。区分大小写是当今流行的短语


电子邮件地址!=emailaddress

PostgresException:42883:函数checkemailexists(emailaddress=>text)不存在


ANS=>Postgre区分大小写,因此始终检查正确的函数名和参数名

postgresception:42883:函数checkemailexists(emailAddress=>text)不存在


ANS=>Postgre是区分大小写的,所以请始终检查正确的函数名和参数名

事实证明,您的调用语法对我很有帮助,所以请放心绕道而行。这并不是毫无意义的……事实证明,你的呼叫语法对我有帮助,所以请绕道而行。这并不是毫无意义的。。。
 public bool EmailExists(string email)
        {
            using (var conn = Connection)
            {
                conn.Open();
                using(var tran = conn.BeginTransaction())
                using (var cmd = new NpgsqlCommand("checkemailexists", conn))
                {
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@emailAddress",NpgsqlTypes.NpgsqlDbType.Text ,"my@email.com");
                    var ret = (bool)cmd.ExecuteScalar();
                    return ret;
                }
            }
        }