From: | "Frank Jonislla" <frank(dot)che88(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Fwd: Parametros con funciones desde vb.net |
Date: | 2007-01-05 02:56:38 |
Message-ID: | 6436a9350701041856t3415c4aaxefd17e4ab4f07e47@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
---------- Forwarded message ----------
From: Frank Jonislla <frank(dot)che88(at)gmail(dot)com>
Date: 04-ene-2007 21:54
Subject: Re: [pgsql-es-ayuda] Parametros con funciones desde vb.net
To: Jeferson Alvarez <jalvarez(at)renova(dot)com(dot)pe>
Bueno No soy bueno para contestar pero aca esta mi aporte.
los procedimientos almacenados en postgres son de este tipo:
nombre del procedimiento ( lista de parametros )
nombre_procedimiento (a,b,c) ya que postgres no reconoce parametros
anonimos.
el contructor que utilizas tiene como parametros (valor, tipo de dato);
NpgsqlParameter() este constructor tiene varias sobrcargas
usa el siguiente NpgsqlParameter("SS",_valor_del_parametro) donde valor del
parametro puede ser un string, entero u otro puesto que Npgsql le pone el
tipo adecuado.
a mi parecer esta seria la forma correcta de hacer tu llamada.
Dim cmdNQ As New Npgsql.NpgsqlCommand("BICH(SS)", cnn)
cmdNQ.Parameters.Add(New NpgsqlParameter("SS",_valor_del_parametro))
o esta, no estoy seguro si va el arroba.
Dim cmdNQ As New Npgsql.NpgsqlCommand("BICH(@SS)", cnn)
cmdNQ.Parameters.Add(New NpgsqlParameter("SS",_valor_del_parametro))
pero yo uso c#
y usar esa forma no seria muy conveniente si utilizas una funcion para
llamra a procedimientos almacenados con parametros variables por eso yo
utilizo esta forma si te sirve.
public System.Data.DataSet TraerDataset(string
ProcedimientoAlmacenado,params System.Object[] Args)
{
System.Data.DataSet mDataSet = new System.Data.DataSet();
//iniciar transaccion
this.CrearDataAdapter(ProcedimientoAlmacenado,
Args).Fill(mDataSet);
return mDataSet;
}
/// <summary>
/// Carga los parametros del procedimiento almacenado
/// </summary>
/// <remarks>
/// Inherited method from base class gDatos
///
/// </remarks>
/// <param name='Comando'>Comando que ejecuta el procedimiento
almacenado</param>
/// <param name='Args'>Parametros que van al rocedimiento
almacenado</param>
protected override void
CargarParametros(System.Data.IDbCommandComando, params object[] Args)
{
for(int i=0;i<Args.Length;i++)
{
//Convert.ToChar(97+i).ToString() = a si i=0
//nombre del parametro
// Args[i] -> Valor del parametro
Comando.Parameters.Add(new Npgsql.NpgsqlParameter(
Convert.ToChar(97+i).ToString(),Args[i]));
}
}
/// <summary>
/// Crea un data adapter paar un procedimiento almacenado
/// </summary>
/// <remarks>
/// Inherited method from base class gDatos
///
/// </remarks>
/// <param name='ProcedimientoAlmacenado'>Nombre del procedimiento
almacenado</param>
/// <param name='Args'>Parametros del procedimieto
almacenado</param>
protected override System.Data.IDataAdapter CrearDataAdapter(string
ProcedimientoAlmacenado, params object[] Args)
{
Npgsql.NpgsqlDataAdapter Da=new Npgsql.NpgsqlDataAdapter((
Npgsql.NpgsqlCommand) Comando(ProcedimientoAlmacenado));
//Npgsql.NpgsqlTransaction t =
(Npgsql.NpgsqlTransaction)this.Conexion.BeginTransaction();
if(Args.Length!=0)
CargarParametros(Da.SelectCommand,Args);
//t.Commit();
return (System.Data.IDataAdapter) Da;
}
/// <summary>
/// crea un comando
/// </summary>
/// <remarks>
/// Inherited method from base class gDatos
///
/// </remarks>
/// <param name='ProcedimientoAlmacenado'>Nombre del procedimiento
almacenado</param>
protected override System.Data.IDbCommand Comando(string
ProcedimientoAlmacenado)
{
Npgsql.NpgsqlCommand Com;
Npgsql.NpgsqlConnection Con2=new Npgsql.NpgsqlConnection (
this.CadenaConexion);
Con2.Open();
Com=new Npgsql.NpgsqlCommand(ProcedimientoAlmacenado,Con2);
Com.CommandType=System.Data.CommandType.StoredProcedure;
Npgsql.NpgsqlCommandBuilder.DeriveParameters(Com);
Con2.Close();
Con2.Dispose();
Com.Connection=(Npgsql.NpgsqlConnection) this.Conexion;
Com.Transaction= (Npgsql.NpgsqlTransaction) this.mTransaccion;
return (System.Data.IDbCommand) Com;
}
El día 4/01/07, Jeferson Alvarez <jalvarez(at)renova(dot)com(dot)pe> escribió:
>
> Actualmente lo estoy llamando asi que cambios tengo que realizarle mil
> gracias por la ayuda brindada espero poder retribuirles el favor mas
> adelante
>
> Dim oData As New sgcCachibachesLIB.UTILeeCfg
> Dim cnn As New
> Npgsql.NpgsqlConnection(oData.BuildChainConection.ToString.Trim)
>
> Dim cmdNQ As New Npgsql.NpgsqlCommand("BICH", cnn)
> cmdNQ.CommandType = CommandType.StoredProcedure
> cmdNQ.Parameters.Add(New NpgsqlParameter("SS",
> NpgsqlTypes.NpgsqlDbType.Char))
>
> Dim da As New Npgsql.NpgsqlDataAdapter(cmdNQ)
> Dim dt As New System.Data.DataTable
> da.Fill(dt)
> dg.DataSource = dt
>
>
> yul pg escribió:
> > es igual que un query solo que los parametros van entre parentesis y
> > dependiendo del tipo de parametro lleva comillas simples, los
> > parametros se separan por comas
> >
> > */Jeferson Alvarez <jalvarez(at)renova(dot)com(dot)pe>/* escribió:
> >
> > Hola a todos soy nuevo en este interesante y seductor mundo de
> > PostgreSQL gracias por la ayuda de ante mano
> > mi problema es el siguiente estamos probando en VB.Net y PosgreSQL y
> > usamos Npgsql para conectarnos he podido
> > ejecutar funciones sin parametros que me devueva un conjunto de
> > registros pero cuando trato de ejecutar una función con
> > parametros enm el mensaje de error mes sale que simplemente no
> > existe la
> > función si alguien pudiera darme una ayudita o indicarme por donde
> > debo
> > buscar la solución.
> >
> > ---------------------------(fin del
> > mensaje)---------------------------
> > TIP 7: no olvides aumentar la configuración del "free space map"
> >
> >
> > __________________________________________________
> > Correo Yahoo!
> > Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
> > Regístrate ya - http://correo.yahoo.com.mx/
> >
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
>
> http://archives.postgresql.org/pgsql-es-ayuda
>
--
.~.
( 0 0 )
/ V \
// \\ Frank Jonislla Pillaca
/(( _ ))\ AYACUCHO
oo0 0oo 9700982
--
.~.
( 0 0 )
/ V \
// \\ Frank Jonislla Pillaca
/(( _ ))\ AYACUCHO
oo0 0oo 9700982
From | Date | Subject | |
---|---|---|---|
Next Message | Alexander Giraldo | 2007-01-05 03:09:25 | Re: proteger archivo PGPASS.CONF |
Previous Message | Haroldo Stenger | 2007-01-05 02:53:53 | Re: Ayuda con el valor de una secuencia al abortar una transaccion. |