【发布时间】:2020-03-10 08:24:52
【问题描述】:
我在 plpgsql 中创建了一个函数,我正在尝试从 .net core api 调用存储过程 但是我在 c# 中遇到了以下异常
42883:函数 proc_insert_test(brndcode => 整数,brndname => 字符变化,brndsname => 字符变化,prdtype => 字符,中断 => 字符,crddate => 日期,状态 => 整数,recstat => 整数, brndgrpseqno => 整数,wefrom => 日期) 不存在
没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
程序:
CREATE OR REPLACE FUNCTION public.proc_insert_test(p_brndcode integer,
p_brndname varchar(100),
p_brndsname varchar(100),
p_prdtype char(1),
p_discontinue char(1),
p_crddate date,
p_status integer,
p_recstat integer,
p_brndgrpseqno integer,
p_wefrom date)
RETURNS char
LANGUAGE plpgsql
AS $body$
BEGIN
Insert into arc_mmstbrndgroup(brndcode, brndname, brndsname, prdtype, discontinue, crddate, status, recstat, brndgrpseqno, wefrom)
values(p_brndcode, p_brndname, p_brndsname, p_prdtype, p_discontinue, p_crddate, p_status, p_recstat, p_brndgrpseqno, p_wefrom);
return 'saved';
END;
$body$
;
从 c# 调用过程:
NpgsqlCommand cmd = new NpgsqlCommand("proc_insert_test", _connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@brndcode", NpgsqlTypes.NpgsqlDbType.Integer, 123);
cmd.Parameters.AddWithValue("@brndname", NpgsqlTypes.NpgsqlDbType.Varchar, 100, "Test3");
cmd.Parameters.AddWithValue("@brndsname", NpgsqlTypes.NpgsqlDbType.Varchar, 100, "Test3");
cmd.Parameters.AddWithValue("@prdtype", NpgsqlTypes.NpgsqlDbType.Char, 1, "T");
cmd.Parameters.AddWithValue("@discontinue", NpgsqlTypes.NpgsqlDbType.Char, 1, "T");
cmd.Parameters.AddWithValue("@crddate", NpgsqlTypes.NpgsqlDbType.Date, DateTime.Now);
cmd.Parameters.AddWithValue("@status", NpgsqlTypes.NpgsqlDbType.Integer, 1);
cmd.Parameters.AddWithValue("@recstat", NpgsqlTypes.NpgsqlDbType.Integer, 9);
cmd.Parameters.AddWithValue("@brndgrpseqno", NpgsqlTypes.NpgsqlDbType.Integer, 1234);
cmd.Parameters.AddWithValue("@wefrom", NpgsqlTypes.NpgsqlDbType.Date, DateTime.Now);
_connection.Open();
cmd.ExecuteNonQuery();
cmd.Dispose();
_connection.Close();
可能是什么问题?
【问题讨论】:
-
尝试重命名.net中的参数以匹配sql脚本中的名称,
@brndcode=>@p_brndcode,@brndname=>@p_brndname等等。 -
@ArjunVachhani OMG,非常感谢,我完全忘记了 XD 现在它工作正常
标签: c# postgresql plpgsql