![]() |
Función de Postgres que devuelve conjunto de registros
Hola a todos:
Estoy intentando recuperar un conjunto de registros que se obtienen a través del llamado de una función de postgres. Trabajo en Delphi 7 y el acceso a Posgres lo tengo con ADO. A traves de los componentes TADOStoreProcedure en tiempo de diseño le doy valor a los parametros de la funcion, y al poner Active en true, no me da problema, pero el DBGrid que tengo en mi formulario asociado al DataSource que a su vez esta relacionado con el TADOStoreProcedure sólo me muestra un registro con un campo que tiene como valor <unnamed portal 1>. Alguien podria darme una idea de cómo puedo obtener los registros para mostrarlos en el DBGrid? Muchas gracias. Espero que alguien me pueda dar una idea. Saludos, Reina |
puedes colocar algo de codigo?
|
Hola:
La funcion de Postgres: CREATE OR REPLACE FUNCTION "public"."card_for_emission" (pbin varchar, ptype integer, puser_id varchar, out result_table "pg_catalog"."refcursor") RETURNS "pg_catalog"."refcursor" AS $body$ declare bankpid integer; seq_pid integer; begin select bank_pid into bankpid from bin_def where bin_def.bin_id = pbin; if bankpid is null then raise exception 'Invalid Bin for get card to emission'; end if; if ptype = 1 then -- People Card TABLE open result_table for select distinct c.cardnumber, p.name, p.last_name, p.last_name2, c.exp_date, c.card_type from card c inner join cardholder ch on c.cardholder_pid = ch.cardholder_pid inner join client cl on cl.client_pid = ch.client_pid inner join bank b on b.bank_pid = cl.bank_pid inner join people p on p.people_pid = cl.people_pid inner join bin_def bd on bd.bank_pid = b.bank_pid where c.status = 1 and b.bank_pid = bankpid and c.printlot = 0; insert into record_log (log_timestamp, log_table, log_table_pid, log_user, log_action, details, log_errorcode) values(CURRENT_TIMESTAMP(2), 'card', NULL, puser_id, 4 , 'select card for PRINT FRONT: status=1' || ' bank_pid='|| bankpid || ' printlot= 0', null); end if; end; $body$ LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; En Delphi tengo el siguiente codigo en el Create del formulario principal: with DM do begin dsPrintFront.Dataset := spPrintFront; MEmisor_Connection.Open; spPrintFront.Parameters.ParamByName('pbin').Value := '977000'; spPrintFront.Parameters.ParamByName('ptype').Value := 1; spPrintFront.Parameters.ParamByName('puser_id').Value := 'reina'; spPrintFront.Prepared := True; spPrintFront.Open; end; En dicho formulario tengo un DBGrid y en tiempo de diseño puse DataSource = DM.dsPrintFront Saludos, Reina |
La franja horaria es GMT +2. Ahora son las 13:06:31. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi