[英]How to Insert list of data in the database by using function i.e,stored procedure in postgres
I have given list of applications that needs to be inserted but after declaring as below and executing displays with 42883: function spinsertapplicationexternalinfrausers(_app_name_externalinfra => character varying[], _user_email => character varying, _role_name => character varying, isaad_user => boolean, isaed_user => boolean) does not exist error我已经给出了需要插入的应用程序列表,但在声明如下并使用 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'......
Resulted with :42883: function spinsertapplicationexternalinfrausers(_app_name_externalinfra => character varying[], _user_email => character varying, _role_name => character varying, isaad_user => boolean, isaed_user => boolean) does not exist结果为:42883:函数 spinsertapplicationexternalinfrausers(_app_name_externalinfra => 字符变化 [],_user_email => 字符变化,_role_name => 字符变化,isaad_user => 布尔值,isaed_user => 布尔值) 不存在
Kindly help on this请对此提供帮助
To invoke a function or stored procedure in PostgreSQL and C#, you don't use CommandType.StoredProcedure
like you would with most ADO.net adapters;要在 PostgreSQL 和 C# 中调用函数或存储过程,不要像大多数 ADO.net 适配器那样使用
CommandType.StoredProcedure
; you simply call it as you would in a SQL IDE using call
or select
.您只需像在 SQL IDE 中一样使用
call
或select
调用它。 Since your example is a function, it should look something like this:由于您的示例是一个函数,因此它应该如下所示:
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();
You didn't ask, but if your function returns something other than void, you can use ExecuteScalar
to return an object with the result of the query.您没有询问,但如果您的函数返回 void 以外的内容,您可以使用
ExecuteScalar
返回带有查询结果的对象。
If your query returns a dataset, you can use a normal data reader to return the results.如果您的查询返回数据集,您可以使用普通数据读取器返回结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.