Hola gente
 abajo mi aporte.

--- El lun 20-abr-09, Ferran <sherk...@gmail.com> escribió:

> De: Ferran <sherk...@gmail.com>
> Asunto: [pgsql-es-ayuda] Stored procedure y C# (Error 42883)
> Para: pgsql-es-ayuda@postgresql.org
> Fecha: lunes, 20 de abril de 2009, 7:47 am
> 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.



 Fijate que el nombre del procedure te lo pone en minusculas , eso occurre 
porque asi lo buscas postgres. para poner nombre de campos mayusculas o 
procedures o lo que sea ,.( para que sea case sensitive) deberas poner los 
nombres entre dobles comillas,

en la parte 
 NpgsqlCommand sentencia = new NpgsqlCommand(
                                                
 "PRC_INSERTA_PERSONA(:nom, :cognom, :poblacio,
 :provincia, :edat)", conn);
 
 deberas 

 NpgsqlCommand sentencia = new NpgsqlCommand(
                                                
 " "PRC_INSERTA_PERSONA"(:nom, :cognom, :poblacio,
 :provincia, :edat)", conn);
 supongo que con un string builder para que no te joda mucho lo de laas 
comillas.


salu2 
a to2
mdc
 


> 
> 
> 
> 
> 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
> 
> 
> 
> 


      Yahoo! Cocina
Recetas prácticas y comida saludable
http://ar.mujer.yahoo.com/cocina/
--
TIP 5: ¿Has leído nuestro extenso FAQ?
         http://www.postgresql.org/docs/faqs.FAQ.html

Responder a