Re: ERROR: SELECT query has no destination for result data

From: Juan Pablo GO <mozstyle2002(at)gmx(dot)net>
To: Mario Soto Cordones - Venezuela <msotocl(at)gmail(dot)com>
Cc: "Jaime N(dot) Charles Treviño" <jamcha(at)sinc(dot)com(dot)mx>, pgsql-es postgresql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: ERROR: SELECT query has no destination for result data
Date: 2005-06-17 16:02:22
Message-ID: 42B2F40E.6010508@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Otra forma seria hacer algo como esto:

CREATE TYPE tMiTipoDeDatos AS

(nMiCpo1 float8,

nMiCpo2 float8,

bMiEstado bool);

ALTER TYPE tMiTipoDeDatos OWNER TO postgres;

...

CREATE OR REPLACE FUNCTION fMiFuncion(MiParm1 int4, MiParm2 int4,
MiParm3 varchar)

RETURNS SETOF tMiTipoDeDatos AS

$BODY$

Declare

rMiRegistro RECORD;

begin

Select into rMiRegistro

cpo1

,cpo2

,true as Estado

from MiEsquema.MiTabla

where cpo1 = MiParam1

and cpo2 = MiParam2

and cpo3 <= MiParam3

order by cpoN ;

if not Found then

rMiRegistro.bMiEstado := false;

end if;

return next rMiRegistro; // Retorna los registros....

return; // OJO con este return que que hace retornar de forma
correcta a la funcin.

End; $BODY$

LANGUAGE 'plpgsql' VOLATILE;

ALTER FUNCTION fMiFuncion(int4, int4, "varchar") OWNER TO postgres;

...

//-----------------------------

Mi funcion principal, o trigger si quieres..

...

Declare rMiRegistroLocal as RECORD;

...

...

begin

Select into rMiRegistroLocal * from fMiFuncion(nVariable1
,nVariable2 ,'Otro dato') ;

if rMiRegistroLocal.bMiEstado then

....
// lo que tengas que hacer, etc.

end if;

end

Salu2
Juan Pablo GO.

Mario Soto Cordones - Venezuela wrote:

>Eso era, gracias , ahora si me retorna los valores
>
>Muchas gracias y un cordial saludo
>
>Mario Soto
>
>El 17/06/05, Jaime N. Charles Treviño<jamcha(at)sinc(dot)com(dot)mx> escribió:
>
>
>>Creo ver algunos detalles:
>>
>>...
>> RAISE NOTICE 'Procesando Datos, espere porfavor';
>>
>> SELECT --> ¿Aquí no debería ser: SELECT INTO rs
>>
>> p.nu_activo_fijo,
>>...
>>
>>... Antes del (1) END LOOP retornas rs, y fuera (2) el RETURN solo
>> RETURN next rs; --> Aqui (1)
>> END LOOP;
>> RETURN; --> Aqui (2)
>>END;
>>...
>>
>>El vie, 17-06-2005 a las 09:10, Mario Soto Cordones - Venezuela
>>escribió:
>>
>>
>>>Hola Lista, tengo el siguiente tipo y funcion respectivamente:
>>>
>>>CREATE TYPE "public"."ty_depreciacion" AS (
>>> "nu_activo_fijo" VARCHAR,
>>> "nb_activo" VARCHAR,
>>> "nu_componente" VARCHAR,
>>> "nb_componente" VARCHAR,
>>> "va_cah" NUMERIC,
>>> "fe_adquisicion" DATE,
>>> "fe_capitalizacion" DATE,
>>> "fe_entoper" DATE,
>>> "nu_ano" INTEGER,
>>> "nu_mes" INTEGER,
>>> "va_dm" NUMERIC,
>>> "va_da" NUMERIC,
>>> "ca_vurm" NUMERIC,
>>> "va_vrm" NUMERIC,
>>> "va_vneto" NUMERIC,
>>> "nu_comprobante" VARCHAR,
>>> "nu_documento" INTEGER
>>>);
>>>
>>>CREATE OR REPLACE FUNCTION "public"."compleja" (emp integer, fil
>>>integer) RETURNS SETOF "public"."ty_depreciacion" AS
>>>$body$
>>>DECLARE
>>> rs ty_depreciacion%rowtype;
>>> empresa alias for $1;
>>> filial alias for $2;
>>> recA RECORD;
>>> padre public.lquery;
>>> BEGIN
>>> FOR recA IN
>>> SELECT DISTINCT min(contabilidad.refpahi.sq_serialcolumn::integer) As sq
>>> FROM
>>> contabilidad.refpahi
>>> WHERE
>>> id_estado= 'SA' AND
>>> co_empresa= empresa AND
>>> co_filial= filial
>>> GROUP BY contabilidad.refpahi.nu_activo_fijo,
>>>contabilidad.refpahi.nu_parent
>>> ORDER BY sq limit 20
>>> LOOP
>>>
>>> padre := '' || recA.sq || '*.*' || '';
>>>
>>> RAISE NOTICE 'Procesando Datos, espere porfavor';
>>>
>>> SELECT
>>> p.nu_activo_fijo,
>>> a.nb_activo AS nb_act,
>>> p.nu_componente,
>>> b.nb_activo AS nb_comp,
>>> c.va_cah,
>>> f.fe_adquisicion,
>>> f.fe_capitalizacion,
>>> f.fe_entoper,
>>> d.nu_ano ,
>>> d.nu_mes,
>>> d.va_dm,
>>> d.va_da,
>>> c.ca_vurm,
>>> d.va_vrm,
>>> d.va_vneto,
>>> d.nu_comprobante,
>>> d.nu_documento
>>> FROM contabilidad.refpahi p,
>>> activos a,
>>> activos b,
>>> contabilidad.samadep c,
>>> public.samafeac f,
>>> contabilidad.sahidep d
>>> WHERE
>>> p.id_estado = 'SA' AND
>>> p.co_empresa = empresa AND
>>> p.co_filial = filial AND
>>> path ~ padre AND
>>> a.nu_activo_fijo = p.nu_activo_fijo AND
>>> b.nu_activo_fijo = p.nu_componente AND
>>> c.co_empresa = p.co_empresa AND
>>> c.co_filial = p.co_filial AND
>>> c.co_codigo = p.nu_componente AND
>>> f.co_empresa = p.co_empresa AND
>>> f.co_filial = p.co_filial AND
>>> f.nu_activo_fijo = p.nu_componente AND
>>> d.co_empresa = p.co_empresa AND
>>> d.co_filial = p.co_filial AND
>>> d.co_codigo = p.nu_componente AND
>>> d.nu_ano = 2004 AND d.nu_mes = 01
>>> ORDER BY
>>> path asc, nu_ano desc, nu_mes asc;
>>>
>>> END LOOP;
>>> RETURN next rs;
>>>END;
>>>$body$
>>>LANGUAGE 'plpgsql' VOLATILE RETURNS NULL ON NULL INPUT SECURITY INVOKER;
>>>
>>>
>>>el ejecutar la funcion me retorna el siguiente error :
>>>ERROR: SELECT query has no destination for result data
>>>
>>>He depurado parte por parte la funcion y hace lo que debe hacer en los
>>>querys, pero no retorna nada en rs y de da el error mencionado,
>>>
>>>Alguien sabe que pueda ser
>>>
>>>Saludos y muchas gracias
>>>
>>>
>>--
>>Lic. Jaime N. Charles Treviño
>>Servicios de Informática Colegiada S.A. de C.V.
>>Villagómez 523 norte, centro, Monterrey, N.L.
>>Tels. (81) 8375-4018, 8114-5013, 8114-5011
>>http://www.sinc.com.mx
>>--
>>"Compartiendo objetivos...Aportando soluciones"
>>
>>
>>
>>
>
>
>
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message al979663 2005-06-17 16:30:21 Error 193 al Iniciar servidor
Previous Message Mximo Eduardo Mndez 2005-06-17 15:58:27 OIDs de tablas y secuencias de Hibernate