No se si srá el caso, ero en su momento nosotros teníamos poblemas con las 
mayusculas y minusculas (tenemos todo en minuscula).
por otro lado, la funcion esta en public o en otro esquema, si es en otro 
deberías llamarla con toda la ruta completa.

  ----- Original Message ----- 
  From: Ferran 
  To: pgsql-es-ayuda@postgresql.org 
  Sent: Monday, April 20, 2009 7:47 AM
  Subject: [pgsql-es-ayuda] Stored procedure y C# (Error 42883)


  Buenos días,

  Tengo un problema para lanzar un stored procedure, ubicado en un postgresql 
8.3 des de visual studio 2008 y C#. Me da un error 42883 y me dice que no 
existe el stored procedure, cuando realmente si que existe.


  El stored es muy sencillo:

  CREATE OR REPLACE PROCEDURE "PRC_INSERTA_PERSONA"(nom bpchar, cognom bpchar, 
poblacio bpchar, provincia bpchar, edat integer) AS
  BEGIN
      INSERT INTO persona values (nom,cognom,poblacio,provincia,edat);
  END

  GRANT EXECUTE ON PROCEDURE "PRC_INSERTA_PERSONA"(bpchar, bpchar, bpchar, 
bpchar, integer) TO user;

  y la llamada des de visual studio 2008 es:

  string sCadConnexio = "Server=192.168.0.58;Port=5444;User 
Id=user;Password=pass;Protocol=3;SSL=false;Pooling=true;MinPoolSize=1;MaxPoolSize=20;Encoding=UNICODE;Timeout=15;SslMode=Disable;Database=BBDD";

              NpgsqlConnection conn = new NpgsqlConnection(sCadConnexio);
              conn.Open();   
               
  NpgsqlCommand sentencia = new NpgsqlCommand(
                                                  "PRC_INSERTA_PERSONA(:nom, 
:cognom, :poblacio, :provincia, :edat)", conn);
                  sentencia.CommandType = CommandType.StoredProcedure;
                  sentencia.Parameters.Add(new NpgsqlParameter(":nom", 
DbType.String));
                  sentencia.Parameters.Add(new NpgsqlParameter(":cognom", 
DbType.String));
                  sentencia.Parameters.Add(new NpgsqlParameter(":poblacio", 
DbType.String));
                  sentencia.Parameters.Add(new NpgsqlParameter(":provincia", 
DbType.String));
                  sentencia.Parameters.Add(new NpgsqlParameter(":edat", 
DbType.Int32));

                  sentencia.Parameters[0].Value = tbNom.Text;
                  sentencia.Parameters[1].Value = tbCognom.Text;
                  sentencia.Parameters[2].Value = tbPoblacio.Text;
                  sentencia.Parameters[3].Value = tbProvincia.Text;
                  sentencia.Parameters[4].Value = tbEdat.Text;

                  sentencia.ExecuteScalar();

  conn.Close();

  El error:  {ERROR: 42883: function prc_inserta_persona(text, text, text, 
text, integer) does not exist"}    System.Exception {Npgsql.NpgsqlException}

  ¿ Alguien me puede ayudar a encontrar el problema ?

  Muchas gracias a todos por vuestra ayuda


Responder a