Re: Obtener los primeros registros de una consulta.

From: GABRIEL COLINA <colina_movil(at)yahoo(dot)com>
To: Jaime Casanova <systemguards(at)gmail(dot)com>
Cc: Alvaro Herrera <alvherre(at)commandprompt(dot)com>, Sergio Vizcaino <SergioV(at)azud(dot)es>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Obtener los primeros registros de una consulta.
Date: 2007-02-10 13:28:50
Message-ID: 511358.19658.qm@web34711.mail.mud.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Siguiendo con las buenas costumbres te respongo abajo jeje.

Jaime Casanova <systemguards(at)gmail(dot)com> escribió: On 2/8/07, GABRIEL COLINA wrote:
> Tengo varios casos resueltos de esta manera
>
> CREATE OR REPLACE FUNCTION "central"."fnc_ncabezales" (nlimite integer)
> RETURNS SETOF "central"."cabezales" AS
> $body$
> select * from central.cabezales limit $1
> $body$
> LANGUAGE 'sql' VOLATILE RETURNS NULL ON NULL INPUT SECURITY INVOKER;
>

para que hacer una funcion setof, si no le permites regresar mas que
un registro?

> Creo rules que refieran a central.cabezales, sea tabla o consulta, a la
> funcion le paso limites y otros parametros y luego la llamo desde la grilla
> de visual basic.
>

talvez no es a lo que te refieres pero igual me arriesgo, los cursores
no son actualizables en postgres... si estas usando visual basic quiza
estes acostumbrado a abrir recordset's (cursores del lado del cliente)
modificar el contenido y luego actualizar la tabla con el metodo
update() del recordset...

eso creo que VB lo traduce como

for del recordset
update tabla set campos = new.campos where current of cursor;
end for;

o algo asi, en todo caso en postgres no existen cursores actualizables
y no se si el metodo update() del recordset sea tan inteligente como
para hacer eso bien... yo prefiero saber que es lo que estoy guardando
y crear la sentencia UPDATE yo mismo ;)

--
Atentamente,
Jaime Casanova

"Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs and the universe trying
to produce bigger and better idiots.
So far, the universe is winning."
Richard Cook


Gracias por resolverme las duda de lo de cursores actualizables

>para que hacer una funcion setof, si no le permites regresar mas que
un registro?

> select * from central.cabezales limit $1

Eso no lo interpretaste bien,

$1, no se refiere a un registro si no a N registro, cuya cantidad a devolver la paso por parametro, puesto la cantidad de registros a mostrar depende de un porcentaje de informacion dado.

Al programar en Visual 6 intento escribir la menor cantidad de codigo posible, uso el dataenviroment y el datacontrol (ADO) de paso por odbc.

Asi que lo unico que hago es algo asi

If Dtactadeudores.rscentral_fnc_deud_pendiente.State = 1 Then Dtactadeudores.rscentral_fnc_deud_pendiente.Close
Dtactadeudores.rscentral_fnc_deud_pendiente.Source = "select * from central.fnc_deud_pendiente(" & AdoClientes.Recordset.Fields("id_cliente") & "," & Val(DataComboMoneda.BoundText) & ") where pendiente>=1 order by fecha"
Dtactadeudores.rscentral_fnc_deud_pendiente.Open
Set DbgPendientes.DataSource = Dtactadeudores
DbgPendientes.DataMember = "central_fnc_deud_pendiente"

Y listo ya lo tengo en una grilla, un poco de codigo mas y tengo algo resuelto.

Igual lo de los cursores lo voy a estudiar por que algo que me aporto Alvaro me dejo la idea que para recordset de solo lectura voy andar mas rapido con ese metodo.

Gracias.





__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2007-02-10 14:29:09 Re: OT: Netiquette y asuntos genéricos
Previous Message Henry 2007-02-10 13:28:03 RE: Problema en ADO con campos text