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