Re: comportamiento extraño

From: "Jaime Casanova" <systemguards(at)gmail(dot)com>
To: "eduardo cabrera" <ecabreraf(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: comportamiento extraño
Date: 2007-07-22 16:00:17
Message-ID: c2d9e70e0707220900y522d96c1lfc4da9afa811bcab@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On 7/22/07, eduardo cabrera <ecabreraf(at)gmail(dot)com> wrote:
> tengo la siguiente funcion
>
> CREATE FUNCTION stock_docu ( BIGINT, BIGINT, TIMESTAMP, TIMESTAMP) RETURNS
> NUMERIC AS '
> DECLARE
> articulo_id ALIAS FOR $1;
> sucursal_id ALIAS FOR $2;
> fecha_i ALIAS FOR $3;
> fecha_t ALIAS FOR $4;
> foo NUMERIC = 0;
> parcial NUMERIC;
> tabla guiadespacho_detalle%ROWTYPE;
> BEGIN
> parcial := 0;
> FOR tabla IN
> SELECT idguiadespacho, cantidad, idarticulo
> FROM guiadespacho_detalle
> WHERE idarticulo = articulo_id
> AND idguiadespacho IN ( SELECT id
> FROM guiadespacho
> WHERE numguiadespacho != ''''
> AND numguiadespacho is not null
> AND estado = ''t''
> AND idsucursal = sucursal_id
> )
> LOOP
> RAISE NOTICE '' - c% | p% | s% %'', tabla.cantidad, parcial, foo,
> tabla.idarticulo;
> foo := foo + 1;
> parcial := CAST(parcial AS NUMERIC) + CAST(tabla.idarticulo AS NUMERIC);
> RAISE NOTICE '' - c% | p% | s%'', tabla.cantidad, parcial, foo;
> RAISE NOTICE '' - - -'';
> END LOOP;
> return foo;
> END;
> ' LANGUAGE 'plpgsql';
>
>
> eso esta bien y todo lo RARO es que la cantidad queda almacenada en
> tabla.idarticulo y si cambio el orden o quito argumentos en el "SELECT
> idguiadespacho, cantidad, idarticulo" se comporta distinto (nunca como
> quiero)
>

que campos tiene la tabla guiadespacho_detalle? porque el record tabla
fue declarado como de tipo guiadespacho_detalle%ROWTYPE, pero en el
select no te arriesgas a hacer un "SELECT *" sino que pones los
nombres de los campos. Si la tabla tiene mas de 3 campos probablemente
estas poniendo esos en los sitios incorrectos, eso quiza explique
porque dices que funciona distinto si sacas los dos primeros campos
del select.

intenta usando "select *" o declarando la variable tabla como record

--
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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gabriel Hermes Colina Zambra 2007-07-22 17:29:57 Re: Cuestion con CaseSensitive
Previous Message Alvaro Herrera 2007-07-22 15:34:00 Re: ajuste de postgres