Kor*_*zay 5 c# postgresql stored-functions npgsql
我的 Npgsql 版本 3.2.5 - Postgresql 9.6
我收到此错误CommandType.StoredProcedure(但CommandType.Text有效):
Npgsql.PostgresException:'42883:函数 customer_select(pEmail => 文本,密码 => 文本) 不存在'
string sql3 = @"customer_select";
NpgsqlConnection pgcon = new NpgsqlConnection(pgconnectionstring);
pgcon.Open();
NpgsqlCommand pgcom = new NpgsqlCommand(sql3, pgcon);
pgcom.CommandType = CommandType.StoredProcedure;
pgcom.Parameters.AddWithValue(":pEmail", "myemail@hotmail.com");
pgcom.Parameters.AddWithValue(":pPassword", "eikaylie78");
NpgsqlDataReader pgreader = pgcom.ExecuteReader();
while (pgreader.Read()) {
string name = pgreader.GetString(1);
string surname = pgreader.GetString(2);
}
Run Code Online (Sandbox Code Playgroud)
这是数据库中的函数:
CREATE OR REPLACE FUNCTION public.customer_select(
pemail character varying, ppassword character varying)
RETURNS SETOF "CustomerTest"
LANGUAGE 'plpgsql'
COST 100.0
AS $function$
BEGIN
RETURN QUERY
SELECT "CustomerTestId", "FirstName", "LastName", "Email", "Password"
FROM public."CustomerTest"
WHERE "Email" = pEmail AND "Password" = pPassword;
END;
$function$;
ALTER FUNCTION public.customer_select(character varying, character varying)
OWNER TO postgres;
Run Code Online (Sandbox Code Playgroud)
Npgsql 确实支持命名参数,但您的参数大小写与您的函数不匹配,请尝试pemail代替pEmail和。ppasswordpPassword
CommandType.StoredProcedure请注意,与 Npgsql 一起使用over 并没有什么特别的优势CommandType.Text- 两者最终都会做同样的事情。CommandType.StoredProcedure主要是为了方便从SqlServer等移植代码。
| 归档时间: |
|
| 查看次数: |
28069 次 |
| 最近记录: |