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