C# NpgSql调用函数/例程
给定以下Postgresql例程: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
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
谢谢大家! 欢迎。。。区分大小写是当今流行的短语
电子邮件地址!=电子邮件地址。。。区分大小写是当今流行的短语
电子邮件地址!=emailaddressPostgresException: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;
}
}
}