提供名称/参数的Postgresql函数不存在,但确实如此

时间:2018-05-01 15:27:36

标签: postgresql npgsql

我只是无法在Posgresql 10中调用函数。我正在使用带有Asp.net Core 2.0的npgsql包。我前段时间使用过这个功能,但它确实有效。我将其更改为包含一个整数参数,现在无法调用它。我删除了所有可能导致问题(日期)的数据类型,但我无法发现问题。到目前为止,Postgresql是我拥有最少亲戚的数据库。

visual studio error

例外说我正在调用这样的函数(我从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复制而来)

my function 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;

0 个答案:

没有答案