Я просто не могу вызвать функцию в Posgresql 10. Я использую пакет npgsql с Asp.net Core 2.0. Я использовал эту функцию некоторое время назад, и она работала. Я изменил его, добавив еще один целочисленный аргумент, и теперь его невозможно вызвать. Я удалил все типы данных, которые, как мне казалось, могли вызвать проблемы (даты), но я не мог определить проблему. 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)
моя функция 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;