gpt4 book ai didi

c# - 获取错误没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。”

转载 作者:行者123 更新时间:2023-11-29 13:11:17 24 4
gpt4 key购买 nike

我正在使用 Npgsql ADO 点网连接器从 C# 代码与 postgresql 通信。

函数在 postgresql 数据库中可用,我也可以从 pgadmin 工具执行它但无法从 c# 代码调用它。

获取错误

42883: function public.insert_json_array_to_test_method_temp(p_input_test_name => text, p_input_test_type_xref => text, p_input_unit_Attribute => text) does not exist"}

error hint - No function matches the given name and argument types. You might need to add explicit type casts.

下面是C#代码

NpgsqlConnection conn = new NpgsqlConnection(_connStr);               
conn.Open();
NpgsqlCommand cmd = new NpgsqlCommand("public.insert_json_array_to_test_method_temp", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new NpgsqlParameter("p_input_test_name", NpgsqlDbType.Text) { Value = testmethod });
cmd.Parameters.Add(new NpgsqlParameter("p_input_test_type_xref", NpgsqlDbType.Text) { Value = testtypexref });
cmd.Parameters.Add(new NpgsqlParameter("p_input_unit_Attribute", NpgsqlDbType.Text) { Value = unitattributes });

NpgsqlDataReader dr = cmd.ExecuteReader();

while (dr.Read())
{

} conn.Close();

下面是函数头部分

    CREATE OR REPLACE FUNCTION 
public.insert_json_array_to_test_method_temp(p_input_test_name
text,p_input_test_type_xref text,p_input_unit_attribute text)
RETURNS text
LANGUAGE 'plpgsql'

COST 100
VOLATILE
AS $BODY$
DECLARE res Text;

BEGIN

--some logic with parameters

res:= public."InsertTestNames"();

Return 'done';

END;

$BODY$;

谁能帮忙解决一下这里的问题是什么?

最佳答案

我改变了创建参数和转换参数的方式 - 现在可以正常工作了。

var parameter1 = cmd.CreateParameter();
parameter1.ParameterName = "parameter_name";
parameter1.NpgsqlDbType = NpgsqlDbType.Text;
parameter1.Value = parameter_value;
cmd.Parameters.Add(parameter1);

关于c# - 获取错误没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54366178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com