我只是无法在Posgresql 10中调用函数。我正在使用带有Asp.net Core 2.0的npgsql包。我前段时间使用过这个功能,但它确实有效。我将其更改为包含一个整数参数,现在无法调用它。我删除了所有可能导致问题(日期)的数据类型,但我无法发现问题。到目前为止,Postgresql是我拥有最少亲戚的数据库。
例外说我正在调用这样的函数(我从visual studio复制它)
function public.sp_cadastrar_pedido(param_cliente_id => integer,
param_numero_parcelas => integer, param_numero_transacao => integer,
param_total => numeric, param_nome_cartao => character,
param_numero_cartao => character, param_endereco_id => integer,
param_forma_pagamento => integer, param_codigo_seguranca => character)
这是我的功能定义(我从PgAdmin复制而来)
CREATE OR REPLACE FUNCTION public.sp_cadastrar_pedido(
param_cliente_id integer,
param_numero_parcelas integer,
param_numero_transacao integer,
param_total numeric,
param_nome_cartao character,
param_numero_cartao character,
param_endereco_id integer,
param_forma_pagamento integer,
param_codigo_seguranca character)
我的c#代码,我正在使用该命令的AddWithValue方法并更改为使用Add方法查看它是否解决了问题,但没有解决方案。我检查了调试器上传递的值,显然它们都很好。
cmd.CommandText = "public.sp_cadastrar_pedido";
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.Add("@param_cliente_id", NpgsqlTypes.NpgsqlDbType.Integer).Value = dadosPedido.ClienteId;
cmd.Parameters.Add("@param_numero_parcelas", NpgsqlTypes.NpgsqlDbType.Integer).Value = dadosPedido.NumeroParcelas;
cmd.Parameters.Add("@param_numero_transacao", NpgsqlTypes.NpgsqlDbType.Integer).Value = dadosPedido.NumeroTransacao;
cmd.Parameters.Add("@param_total", NpgsqlTypes.NpgsqlDbType.Numeric).Value = dadosPedido.Total;
cmd.Parameters.Add("@param_nome_cartao", NpgsqlTypes.NpgsqlDbType.Char).Value = dadosPedido.NomeCartao;
cmd.Parameters.Add("@param_numero_cartao", NpgsqlTypes.NpgsqlDbType.Char).Value = dadosPedido.NumeroCartao;
cmd.Parameters.Add("@param_endereco_id", NpgsqlTypes.NpgsqlDbType.Integer).Value = dadosPedido.Endereco.EnderecoId;
// cmd.Parameters.Add("@param_data_validade_cartao", NpgsqlTypes.NpgsqlDbType.Date, 20).Value = dadosPedido.DataValidadeCartao.Date;
// cmd.Parameters.Add("@param_data_nascimento", NpgsqlTypes.NpgsqlDbType.Date, 20).Value = dadosPedido.DataNascimento.Date;
cmd.Parameters.Add("@param_forma_pagamento", NpgsqlTypes.NpgsqlDbType.Integer).Value = 0;
cmd.Parameters.Add("@param_codigo_seguranca", NpgsqlTypes.NpgsqlDbType.Char).Value = dadosPedido.CodigoSeguranca;