Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
problème résolu après avoir créé la base sans passer par le template0.
fonction test:
create or replace function test (val in int, offs in int, minVal in int, maxVal in int) returns int as $$
declare
xOffset integer;
newOffset integer;
newVal integer;
range integer;
begin
range=maxval-minval+1;
newOffset=(offs/abs(offs))*(abs(offs) % range);
newVal=val-minVal;
xOffset=newVal+newOffset;
if xOffset > range then
xOffset=xOffset % range;
end if;
if xOffset < 0 then
xOffset=range+xOffset;
end if;
return xOffset+minVal;
end; $$ language plpgsql immutable;
fonction decrypt:
create function decrypt (in s_in varchar, in s_key varchar) returns varchar as $$
declare lkey int;
ls int;
i int;
j int;
k int;
offs int;
newcode int;
resultat varchar;
begin
resultat:='';
lkey:=length(s_key);
ls:=length(s_in);
k:=1;
for i in 1..ls
loop
offs:=ascii(substr(s_key,k,1));
newcode:=test(ascii(substr(s_in,i,1)),-offs,32,121);
resultat:=resultat||chr(newcode);
k:=k+1;
if k>lkey then
k:=1;
end if;
end loop;
return resultat;
end;$$ LANGUAGE 'plpgsql'
Bonjour,
est ce que tu as pris la 1ere fonction du 1er message ?
Cordialement.
Laurent.
Bonjour,
super merci ça fonctionne par contre j'ai une erreur lorsque je fais appel a cette fonction dans une autre fonction sur l'encodage, une idée sur cette erreur ?
La base est en UTF8.
fonction decrypt
CREATE FUNCTION decrypt (in s_in varchar, in s_key varchar) RETURNS varchar AS
$$
DECLARE LKEY INT;
LS INT;
I INT;
J INT;
K INT;
OFFS INT;
NEWCODE INT;
RESULTAT VARCHAR;
BEGIN
RESULTAT:='';
LKEY:=LENGTH(S_KEY);
LS:=LENGTH(S_IN);
K:=1;
FOR I IN 1..LS
LOOP
OFFS:=ASCII(SUBSTR(S_KEY,K,1));
NEWCODE:=test(ASCII(SUBSTR(S_IN,I,1)),-OFFS,32,121);
RESULTAT:=RESULTAT||CHR(NEWCODE);
K:=K+1;
IF K>LKEY then
K:=1;
END IF;
END LOOP;
RETURN RESULTAT;
END;
$$
LANGUAGE 'plpgsql'
select decrypt('H(u.()u3-','PREV')
ERROR: requested character too large for encoding: -8
Bonjour,
je dois convertir une fonction existante sous oracle vers postgres 10. Le soucis est qu'il me sort une erreur au niveau du IF si quelqu'un a une idée sur le problème parce que la je sèche.
CREATE OR REPLACE FUNCTION test (val IN int, offs IN
int, minVal IN int, maxVal IN int) RETURNS INT AS
$$
DECLARE
Offset int;
newOffset int;
newVal int;
range int;
BEGIN
range:=maxval-minval+1;
newOffset:=(offs/abs(offs))*(abs(offs) % range);
newVal:=val-minVal;
Offset:=newVal+newOffset;
if Offset > range then
Offset:=Offset;
end if;
if Offset<0 then
Offset:=range+offset;
end if;
Offset:=Offset+minVal;
return Offset+minVal;
END;
$$ LANGUAGE plpgsql;
ERROR: syntax error at or near ">"
Pages : 1