Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: pl/pgsql para torpes


  • From: marcelo Cortez <jmdc_marcelo(at)yahoo(dot)com(dot)ar>
  • To: pgsql-es-ayuda(at)postgresql(dot)org, Juan Carlos Barranco de Paz <jcb(at)greccosoft(dot)es>
  • Subject: Re: pl/pgsql para torpes
  • Date: Fri, 30 May 2008 07:26:17 -0700 (PDT)
  • Message-id: <96539(dot)93384(dot)qm(at)web32005(dot)mail(dot)mud(dot)yahoo(dot)com>

Hola gente

Carlos te comento el codigo, y te agrego algunsa palabras entre lineas ( leer mas abajo)


--- El vie 30-may-08, Juan Carlos Barranco de Paz <jcb(at)greccosoft(dot)es> escribió:

> De: Juan Carlos Barranco de Paz <jcb(at)greccosoft(dot)es>
> Asunto: [pgsql-es-ayuda] pl/pgsql para torpes
> Para: pgsql-es-ayuda(at)postgresql(dot)org
> Fecha: viernes, 30 de mayo de 2008, 7:20 am
> Hola, estoy empezando a trabajar con pl/pgsql y no entiendo
> bien el uso de
> las comillas y del raise, por favor me podeis decir como
> hacer esto o que
> estoy haciendo mal y un donde puedo conseguir un manual
> paras torpes de
> pl/pgsql.
> 
> Cuando ejecuto select dw0_0010() me devuelve este error :
> ERROR:  too many parameters specified for RAISE
> CONTEXT:  PL/pgSQL function "dw0_0010_1" line 6
> at raise
> sentencia SQL: «SELECT  dw0_0010_1( $1 )»
> PL/pgSQL function "dw0_0010" line 13 at perform
> 
> ********** Error **********
> 
> ERROR: too many parameters specified for RAISE
> Estado SQL:42601
> Contexto:PL/pgSQL function "dw0_0010_1" line 6 at
> raise
> sentencia SQL: «SELECT  dw0_0010_1( $1 )»
> PL/pgSQL function "dw0_0010" line 13 at perform
> 
> 
> Estas son  las funciónes : 
> 
>  CREATE OR REPLACE FUNCTION dw0_0010()
>   RETURNS smallint AS
> $BODY$
> DECLARE
> 	dw01		dw01conf%ROWTYPE;
> 	dw0_0010_c 	cursor for select * from dw01conf;
> BEGIN
> 	OPEN dw0_0010_c ;
> 	LOOP
> 		FETCH dw0_0010_c INTO dw01;
> 		EXIT WHEN NOT FOUND;
> 		PERFORM dw0_0010_1(dw01);
> 	END LOOP;
> 	CLOSE dw0_0010_c;
> 	RETURN 0;
> END;
> $BODY$
>   LANGUAGE 'plpgsql' VOLATILE;
> 
> ------ Hasta aqui creo que va bien pero esta me falla por
> todos lados
> 
> CREATE OR REPLACE FUNCTION dw0_0010_1(dw01 dw01conf)
>   RETURNS smallint AS
> $BODY$
> DECLARE 
> aux0 	text;
> dw10    dw10tcom%ROWTYPE;
> dw0_0010_1_c  refcursor;
> BEGIN
> 	RAISE NOTICE 'texto1', dw01.empresa;

Carlos , esto esta mal, el raise sigue un poco la filosofia del printf(.. de C alli en el string pones el simbolo % en cada parametro. o sea 

mal --> RAISE NOTICE 'texto1', dw01.empresa;
 quedaria
corregido --> RAISE NOTICE 'texto1 %  %', dw01.empresa;

podrias poner 
RAISE NOTICE 'texto1 raise  codigo=%   empresa= %', dw01.empresa;

como sugiere el code los % seran reemplazado por los parametros despues del string basasdos es su posicion. 
espero haberte aclarado algo salud2

mdc 
> 	
> 	if dw01.origen = 1 or dw01.origen = 3
> 	then
> 		aux0 := 'select distinct
> c.empresa,to_number(to_char(c.fecha,''YYYYMMDDHH24''),''9999999999''),
> 			to_number(to_char(c.fecha,''YYYY''),''9999''),
> 			to_number(to_char(c.fecha,''Q''),''9''),
> 			to_number(to_char(c.fecha,''MM''),''99''),
> 			to_number(to_char(c.fecha,''W''),''9''),
> 			to_number(to_char(c.fecha,''WW''),''99''),
> 			to_number(to_char(c.fecha,''ID''),''9''),
> 			to_number(to_char(c.fecha,''DD''),''99'')
> 
> 			from 	gc05albc c,gc06albl l
> 			where	c.empresa	= ''' || dw01.empresa ||
> '''
> 			and	c.serie		= l.serie 
> 			and	c.albaran	= l.albaran
> 			and     c.fecha     	>=''' ||
> dw01.fecha_inicial
> || '''
> 			and     c.proveedor     = l.proveedor
> 			and	l.tipo          = 1 
> 			and	l.unidades	<> 0 
> 			and   length(l.articulo) = 0';
> 	end if;
> 	
> 	OPEN dw0_0010_1_c FOR EXECUTE aux0;
> 
> 	RAISE NOTICE 'PASA';
> 	LOOP
> 		FETCH dw0_0010_1_c INTO dw10;
> 		EXIT WHEN NOT FOUND;
> 		RAISE NOTICE 'prueba', dw10.tiempo;
> 	END LOOP;
> 
>         RAISE NOTICE 'PASA FIN';
> 	
> 	RETURN 0;
> END;
> $BODY$
>   LANGUAGE 'plpgsql' VOLATILE
> 
>  
> 
> __________ Information from ESET NOD32 Antivirus, version
> of virus signature
> database 3145 (20080529) __________
> 
> The message was checked by ESET NOD32 Antivirus.
> 
> http://www.eset.com
>  
>  
> 
> __________ Information from ESET NOD32 Antivirus, version
> of virus signature
> database 3145 (20080529) __________
> 
> The message was checked by ESET NOD32 Antivirus.
> 
> http://www.eset.com
>  
> 
> --
> TIP 9: visita nuestro canal de IRC #postgresql-es en
> irc.freenode.net

__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis! 
¡Abrí tu cuenta ya! - http://correo.yahoo.com.ar



Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group