[英]How to Insert list of data in the database by using function i.e,stored procedure in postgres
我已经给出了需要插入的应用程序列表,但在声明如下并使用 42883 执行显示后:函数 spinsertapplicationexternalinfrausers(_app_name_externalinfra => 字符变化 [],_user_email => 字符变化,_role_name => 字符变化,isaad_user => 布尔值, isaed_user => boolean) 不存在错误
Dal.InsertApplicationExternalUser(listapplications.ToArray(), appuser);
ShowMessage("Data inserted successfully", MessageType.Success);
-----------------
In DataAccesslayer : public void InsertApplicationExternalUser(string[] appnames,ApplicationUsers appuser)
{
con = new NpgsqlConnection(cs);
con.Open();
using (NpgsqlTransaction tran = con.BeginTransaction())
{
cmd = new NpgsqlCommand("spinsertapplicationexternalinfrausers", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("_app_name_externalinfra", NpgsqlDbType.Array | NpgsqlDbType.Varchar, appnames);
cmd.Parameters.AddWithValue("_user_email", NpgsqlDbType.Varchar, appuser.User_email);
cmd.Parameters.AddWithValue("_role_name", NpgsqlDbType.Varchar, appuser.Role_Name);
cmd.Parameters.AddWithValue("isaad_user", NpgsqlDbType.Boolean, appuser.isAAD_User);
cmd.Parameters.AddWithValue("isaed_user", NpgsqlDbType.Boolean, appuser.isAED_user);
cmd.ExecuteNonQuery();
tran.Commit();
---------------------------------------
Function created is as like:
CREATE OR REPLACE FUNCTION public.spinsertapplicationexternalinfrausers(
_app_name_externalinfra character varying,
_user_email character varying,
_role_name character varying,
isaad_user boolean,
isaed_user boolean)
RETURNS void
LANGUAGE 'plpgsql'......
结果为:42883:函数 spinsertapplicationexternalinfrausers(_app_name_externalinfra => 字符变化 [],_user_email => 字符变化,_role_name => 字符变化,isaad_user => 布尔值,isaed_user => 布尔值) 不存在
请对此提供帮助
要在 PostgreSQL 和 C# 中调用函数或存储过程,不要像大多数 ADO.net 适配器那样使用CommandType.StoredProcedure
; 您只需像在 SQL IDE 中一样使用call
或select
调用它。 由于您的示例是一个函数,因此它应该如下所示:
cmd = new NpgsqlCommand("select spinsertapplicationexternalinfrausers(:app, :user, :role, :isaad, :isaed", con);
cmd.Parameters.AddWithValue("app", NpgsqlDbType.Array | NpgsqlDbType.Varchar, appnames);
cmd.Parameters.AddWithValue("user", NpgsqlDbType.Varchar, appuser.User_email);
cmd.Parameters.AddWithValue("role", NpgsqlDbType.Varchar, appuser.Role_Name);
cmd.Parameters.AddWithValue("isaad", NpgsqlDbType.Boolean, appuser.isAAD_User);
cmd.Parameters.AddWithValue("isaed", NpgsqlDbType.Boolean, appuser.isAED_user);
cmd.ExecuteNonQuery();
您没有询问,但如果您的函数返回 void 以外的内容,您可以使用ExecuteScalar
返回带有查询结果的对象。
如果您的查询返回数据集,您可以使用普通数据读取器返回结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.