42809 从 Asp.Net C# 应用程序执行 PostgreSQL 存储过程时出错
42809 Error On Executing PostgreSQL Stored Procedure From Asp.Net C# Application
我在 ASP.NET 应用程序中使用 PostgreSQL pgadmin4 (4.16v)。我创建了一个定义如下的程序:
CREATE OR REPLACE PROCEDURE public.usp_bind(
)
LANGUAGE 'plpgsql'
AS $BODY$
BEGIN
select district_id,district_name from district_master order by district_name;
END;
$BODY$;
从asp.net应用程序我调用了上面的程序,代码如下:
NpgsqlConnection conn = new NpgsqlConnection();
NpgsqlDataAdapter da = new NpgsqlDataAdapter();
NpgsqlCommand cmd = new NpgsqlCommand();
DataSet ds = new DataSet();
public string dbconstr = dbConnectstr.Connectionstring();
public DataSet getDatafunction(string procedure_, [Optional] string flag_)
{
using (conn = new NpgsqlConnection(dbconstr))
{
//conn.Open();
using (da = new NpgsqlDataAdapter())
{
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.CommandText = "CALL usp_bind";
da.SelectCommand.Connection = conn;
using (ds = new DataSet())
{
da.Fill(ds);
}
}
//conn.Close();
}
return ds;
}
它给我一个错误,因为 - 42809:'usp_bind' 是一个过程。
我也可以使用 CALL
方法调用它,但没有用。从 ASP.NET 应用程序调用过程的确切方法是什么?
不要在您的命令中设置 CommandType.StoredProcedure
。
不幸的是,存储过程是新的,并且 CommandType.StoredProcedure
已经用于调用 函数 ,并且更改这将是此时的重大突破性更改。
我在 ASP.NET 应用程序中使用 PostgreSQL pgadmin4 (4.16v)。我创建了一个定义如下的程序:
CREATE OR REPLACE PROCEDURE public.usp_bind(
)
LANGUAGE 'plpgsql'
AS $BODY$
BEGIN
select district_id,district_name from district_master order by district_name;
END;
$BODY$;
从asp.net应用程序我调用了上面的程序,代码如下:
NpgsqlConnection conn = new NpgsqlConnection();
NpgsqlDataAdapter da = new NpgsqlDataAdapter();
NpgsqlCommand cmd = new NpgsqlCommand();
DataSet ds = new DataSet();
public string dbconstr = dbConnectstr.Connectionstring();
public DataSet getDatafunction(string procedure_, [Optional] string flag_)
{
using (conn = new NpgsqlConnection(dbconstr))
{
//conn.Open();
using (da = new NpgsqlDataAdapter())
{
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.CommandText = "CALL usp_bind";
da.SelectCommand.Connection = conn;
using (ds = new DataSet())
{
da.Fill(ds);
}
}
//conn.Close();
}
return ds;
}
它给我一个错误,因为 - 42809:'usp_bind' 是一个过程。
我也可以使用 CALL
方法调用它,但没有用。从 ASP.NET 应用程序调用过程的确切方法是什么?
不要在您的命令中设置 CommandType.StoredProcedure
。
不幸的是,存储过程是新的,并且 CommandType.StoredProcedure
已经用于调用 函数 ,并且更改这将是此时的重大突破性更改。