[caracas-pm] CASO PL/PERLdido

Alexis Arnal aarnal at me.gob.ve
Fri Apr 1 07:58:18 PST 2005


Saludos,

Estoy estudiando la manera de implementar procedimientos almacenados en
Postgres con plperl, pero encuentro que la documentación es un poco
escasa en el manual de Postgres.

He revisado en algunos libros y apenas lo nombran mostrando siempre los
dos mismos ejemplos del manual, estuve buscando en internet y tampoco
encuentro gran cosa.

Esto es una de las cosas que estoy inventando:
1.- Creo una función que dados dos números $a y $b retorne un arreglo en
que se guarda el mayor hasta que ambos son iguales

/**********************
*funcion flechazo10
**********************/
CREATE FUNCTION perl_max (integer, integer) RETURNS text AS '
	($a,$b)=@_;		
	$i=0;			
	until ($a==$b) {	
		if ($a > $b) { 
			$array[$i]=$a;
			} else {
				$array[$i]=$b;
			}
		$i++;		
		$a--;
		$b++;
		}
		return @array
' LANGUAGE plperl;
**************************

Y este es el script con que llamo a la función
**************************
#!/usr/bin/perl -w
use DBI;
use Benchmark;
$start = new Benchmark; 

$user="aarnal";
$password='1234';
$host = 'localhost';
$port= 5432;
$driver="dbi:Pg:dbname=kit;host=$host;port=$port";


unless ($dbh= DBI -> connect($driver,$user,$password)) {
	print "\n *** No se pudo contactar el servidor ***\n";
	}
	
$preparar = $dbh -> prepare("select perl_max (?,?)");
$statement = $preparar or die "\nError ($DBI::err): $DBI::errstr\n";

$a = 500;
$b = 0;

@array=$statement -> execute($a,$b) or die "\nError ($DBI::err):
$DBI::errstr\n";

print  $array[0],"\n";

$end = new Benchmark;
$elapsed = timediff ($end,$start);
print "Tiempo de Ejecucion :", timestr ($elapsed),"\n";
***************************

Y este es el resultado:
***************************
aarnal at 03omisis090:~$ perl ejr_almacenado.pl
1
Tiempo de Ejecucion : 0 wallclock secs ( 0.01 usr +  0.00 sys =  0.01
CPU)
****************************

Quiero retornar un arreglo con todos los valores que guardo en @array y
no encuentro la manera

Gracias Si me pueden ayudar o indicar donde puedo encontrar màs
documentación, ejemplos y/o mejores prácticas para la implementación de
procedimientos almacenados
-- 
Linux user number 378161
Caracas-Venezuela



More information about the caracas-pm mailing list