| |
CREATE OR REPLACE FUNCTION " public " ." verifemail " (text ) RETURNS boolean AS
$body $
SELECT $1 ~ * ' ^[0-9a-z._-]+@[0-9a-z._-]+\\.[a-z]{2,4}$ ' ;
$body $
LANGUAGE ' sql ' VOLATILE RETURNS NULL ON NULL INPUT SECURITY INVOKER;
|
|
| |
CREATE OR REPLACE FUNCTION " public " ." verifcb " (numero varchar ) RETURNS boolean AS
$body $
DECLARE
i integer ;
r integer = 0 ;
val integer ;
etape boolean = true ;
BEGIN
i:= length (numero);
LOOP
IF etape= true THEN
val:= substring(numero from i for 1 )::integer ;
etape:= false ;
ELSE
val:= substring(numero from i for 1 )::integer * 2 ;
IF length (val::varchar )= 2 THEN
val:= substring(val::text from 1 for 1 )::integer +
substring(val::text from 2 for 1 )::integer ;
END IF ;
etape:= true ;
END IF ;
r:= r+ val;
i:= i- 1 ;
EXIT WHEN i= 0 ;
END LOOP ;
return r% 10 = 0 ;
END ;
$body $
LANGUAGE ' plpgsql ' VOLATILE RETURNS NULL ON NULL INPUT SECURITY INVOKER;
|
|
| |
CREATE OR REPLACE FUNCTION " public " ." validisbn " (numisbn text ) RETURNS boolean AS
$body $
DECLARE
unchar varchar (1 );
lavaleur integer ;
lechecksum integer ;
i integer ;
j integer ;
BEGIN
IF length (numisbn)!= 13 THEN
return false ;
END IF ;
unchar:= substring(numisbn from length (numisbn) for 1 );
IF Position(unchar IN ' 0123456789X ' )= 0 THEN
return false ;
END IF ;
IF unchar = ' X ' THEN
lechecksum:= 10 ;
ELSE
lechecksum:= unchar::integer ;
END IF ;
j:= 1 ;
FOR i IN 1 ..11 LOOP
unchar:= substring(numisbn from i for 1 );
IF position(unchar IN ' 0123456789 ' )> 0 THEN
lechecksum:= lechecksum+ unchar::integer * (11 - j);
j:= j+ 1 ;
END IF ;
END LOOP ;
return lechecksum% 11 = 0 ;
END ;
$body $
LANGUAGE ' plpgsql ' VOLATILE RETURNS NULL ON NULL INPUT SECURITY INVOKER;
|
|
| |
CREATE OR REPLACE FUNCTION " public " ." distancelonglat " (long_a numeric , lat_a numeric , long_b numeric , lat_b numeric ) RETURNS numeric AS
$body $
BEGIN
return 6366 * acos (cos (radians(lat_a))* cos (radians(lat_b))* cos (radians(long_b)- radians(long_a))+ sin (radians(lat_a))* sin (radians(lat_b)));
END ;
$body $
LANGUAGE ' plpgsql ' VOLATILE RETURNS NULL ON NULL INPUT SECURITY INVOKER;
|
|
| |
CREATE OR REPLACE FUNCTION create_pass(optx bpchar, int4 len)
RETURNS " varchar " AS
$BODY $
DECLARE
lo int4;
rng int4;
n int4;
xstr VARCHAR := ' ' ;
BEGIN
IF optx = ' u ' THEN
lo := 65 ; rng := 26 ;
ELSIF optx = ' l ' THEN
lo := 97 ; rng := 26 ;
ELSIF optx = ' a ' THEN
lo := 65 ; rng := 58 ;
ELSIF optx = ' x ' THEN
lo := 48 ; rng := 43 ;
ELSIF optx = ' r ' THEN
lo := 48 ; rng := 75 ;
ELSIF optx = ' p ' THEN
lo := 32 ; rng := 95 ;
ELSE
lo := 65 ; rng := 26 ;
END IF ;
FOR i IN 1 ..len LOOP
LOOP
n := lo + TRUNC (rng * random());
EXIT WHEN NOT ((n BETWEEN 58 AND 64 OR n BETWEEN 91 AND 96 ) OR n IN (48 , 49 , 73 , 79 , 105 , 106 , 108 , 111 ));
END LOOP ;
xstr := xstr | | chr (n);
END LOOP ;
RETURN xstr;
END ;
$BODY $
LANGUAGE ' plpgsql ' VOLATILE;
|
|
Consultez les autres pages sources
|
|
Les sources présentées sur cette page sont libres de droits
et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation
constitue une œuvre intellectuelle protégée par les droits d'auteur.
Copyright © 2006 Damien Griessinger Developpez LLC.
Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne
peut être faite de ce site ni de l'ensemble de son contenu : textes, documents
et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez
selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.