title: PostgreSQL with c# Backend sent unrecognized response type: o
body: <p>I'm trying to execute the following function like ExecuteNonQuery in C#:</p>
  
  <pre><code>CREATE OR REPLACE FUNCTION Fifty(cpfDe bigint,cpfPara bigint, valorDe decimal,valorPara decimal, idPagamento bigint)
  RETURNS void AS $$
  DECLARE comissionamento bigint;
  BEGIN
  IF (cpfPara &lt;&gt; 0)
  THEN
  insert into tb_comissionamentos 
  (
      cpf_autonomo, id_imobiliaria, cpf_comprador, 
      id_venda, id_pagamento, valor,
      id_status, data_alteracao, id_usuario, 
      valor_percentual_banco, valor_ted, valor_deb_boleto_comprador,
      valor_liquido, status_envio_efetivacao
  ) 
  select 
      cpfPara, id_imobiliaria, cpf_comprador, 
      id_venda, id_pagamento, valorPara, 
      id_status, data_alteracao, id_usuario, 
      (valorPara * 0.02), valor_ted, 0.08, valor_liquido, 
      status_envio_efetivacao 
  FROM tb_comissionamentos 
  where 
      id_pagamento = idPagamento 
      and cpf_autonomo = cpfDe
      and valor = valorDe;
  
  SELECT id_comissionamento 
      into comissionamento
  FROM tb_comissionamentos
  WHERE id_pagamento = idPagamento
  AND cpf_autonomo = cpfPara; 
  
  update tb_hist_comissionamentos set 
      cpf_autonomo = cpfPara,
      valor =valorPara,      
      valor_percentual_banco = valorPara * 0.02, 
      valor_deb_boleto_comprador = 0.08, 
      id_comissionamento = comissionamento
  where 
      id_pagamento = idPagamento 
      and cpf_autonomo = cpfDe 
      and id_comissionamento = comissionamento;
  
  delete from tb_comissionamentos 
  where 
      id_pagamento = idPagamento 
      and cpf_autonomo = cpfDe 
      and id_comissionamento = comissionamento;
  ELSE
  DELETE FROM tb_hist_teds_enviadas
  where id_comissionamento in 
      (SELECT id_comissionamento FROM
      tb_comissionamento where 
      id_pagamento = idPagamento 
      and cpf_autonomo = cpfDe     
      and valor = valorDe);
  
  DELETE FROM tb_teds_enviadas
  where id_comissionamento in 
      (SELECT id_comissionamento FROM
      tb_comissionamento where 
      id_pagamento = idPagamento 
      and cpf_autonomo = cpfDe     
      and valor = valorDe);
  
  DELETE FROM tb_hist_comissionamentos
  where 
      id_pagamento = idPagamento 
      and cpf_autonomo = cpfDe  
      and valor = valorDe;  
  
  delete from tb_comissionamentos 
  where 
      id_pagamento = idPagamento 
      and cpf_autonomo = cpfDe     
      and valor = valorDe;
  END IF;
  IF (cpfDe &lt;&gt; 0)
  THEN
  insert into tb_comissionamentos 
  (
      cpf_autonomo, id_imobiliaria, cpf_comprador, 
      id_venda, id_pagamento, valor,
      id_status, data_alteracao, id_usuario, 
      valor_percentual_banco, valor_ted, valor_deb_boleto_comprador,
      valor_liquido, status_envio_efetivacao
  ) 
  select 
      cpfPara, id_imobiliaria, cpf_comprador, 
      id_venda, id_pagamento, valorPara, 
      id_status, data_alteracao, id_usuario, 
      (valorPara * 0.02), valor_ted, 0.08, valor_liquido, 
      status_envio_efetivacao 
  FROM tb_comissionamentos 
  where 
      id_pagamento = idPagamento;
  
  SELECT id_comissionamento 
      into comissionamento
  FROM tb_comissionamentos
  WHERE id_pagamento = idPagamento
  AND cpf_autonomo = cpfPara; 
  
  INSERT INTO tb_hist_comissionamentos( 
      cpf_autonomo,
      valor,      
      valor_percentual_banco, 
      valor_deb_boleto_comprador, 
      id_comissionamento,
      id_pagamento)
      VALUES(cpfPara, valorPara,valorPara * 0.02, 0.08, comissionamento,idPagamento);
  END IF;
  END
  $$ LANGUAGE plpgsql;
  </code></pre>
  
  <p>When i put all parameters in c# and call the execute non query i got the following message error:
  Backend sent unrecognized response type: o</p>
  
  <p>I can run the function normally in the Postgres console it works perfectly fine.
  I think is the return type, but i don't know what should return to get an execution success.
  EDITED
  C# Code:</p>
  
  <pre><code>using (NpgsqlCommand command = new NpgsqlCommand())
                  {
                      if (!dllConexao.open(Processadora.Comum.tipoConexao, 1, true))
                      {
                          clsRetorno.ret = 99;
                          clsRetorno.msg = "Sistema temporariamente indisponível, tente novamente mais tarde";
                      }
                      if (this.dllConexao.transactionIsOpen())
                      {
                          command.Transaction = this.dllConexao.TransacaoBd;
                      }
                      command.Connection = this.dllConexao.ConexaoBd;
                      command.CommandType = CommandType.StoredProcedure;
                      command.CommandText = "Fifty";
                      var parm = command.CreateParameter();
                      parm.ParameterName = "cpfDe";
                      parm.DbType = DbType.Int64;
                      parm.Value = cpfDe;
                      var parm1 = command.CreateParameter();
                      parm1.ParameterName = "cpfPara";
                      parm1.DbType = DbType.Int64;
                      parm1.Value = cpfPara;
  
                      var parm2 = command.CreateParameter();
                      parm2.ParameterName = "valorDe";
                      parm2.DbType = DbType.Decimal;
                      parm2.Value = valorDe;
  
                      var parm3 = command.CreateParameter();
                      parm3.ParameterName = "valorPara";
                      parm3.DbType = DbType.Decimal;
                      parm3.Value = valorPara;
  
                      var parm4 = command.CreateParameter();
                      parm4.ParameterName = "idPagamento";
                      parm4.DbType = DbType.Int32;
                      parm4.Value = idPagamento;
  
  
                      command.Parameters.Add(parm);
                      command.Parameters.Add(parm1);
                      command.Parameters.Add(parm2);
                      command.Parameters.Add(parm3);
                      command.Parameters.Add(parm4);
  
  
                      command.ExecuteNonQuery();
                      this.dllConexao.commitTransacao();
                      this.dllConexao.closeTransaction();
  
                  }
  </code></pre>