我使用NPGSQLADO.net连接器从C#代码与postgresql通信。
函数在postgresql数据库中可用,我也可以从pgadmin工具执行它,但无法从c#code调用它。
获取错误
42883:函数public.insert_json_array_to_test_method_temp(p_input_test_name=
错误提示-没有与给定名称和参数类型匹配的函数。您可能需要添加显式类型转换。
下面是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);
但这段代码有一个错误: 错误:函数log(数值,双精度)不存在行1:select log(2.7,c) 提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。 查询:select log(2.7,c)context:pl/pgsql function inline_code_block line 11 at SQL语句SQL state:42883
因此,im在将数据库从Oracle迁移到PGSql项目中,现在im修复了一些查询.我有一个这样的错误: 并且我在这个字符串生成器上发现了来自控制台的nvl错误
我使用DBEaver在PostgreSQL中创建了一个存储过程。我正试图通过从DBeaver调用过程将数据插入到表中。但这给了我一个错误 SQL错误[42883]:错误:函数public.proc_insert_test(integer,unknown,unknown,unknown,unknown,unknown,timestamp with time zone,integer,integer,
这里是上面代码的错误-> 没有与给定的名称和参数类型匹配的函数。您可能需要添加显式类型转换。
我在PostgreSQL中有一个存储过程,如下所示: 我的数据库中有带精度值的类型。对于numeric,我只需要使用。这条路对吗?
代码中的以下语句给了我一个错误: 是Postgres中的用户定义聚合函数,定义为: 错误消息为: