Функция Postgresql с указанным именем / аргументами не существует, но она существует - PullRequest
0 голосов
/ 01 мая 2018

Я просто не могу вызвать функцию в 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;
...