|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 530 ![]() |
Bonjour,
Le package système UTL_ENCODE n'existe pas encore en 8.1.7. J'ai trouvé un lien vers ce qui semble être une solution, cependant ce lien est mort: http://www.oracle.com/us/technology/...4demo8_sql.txt Quelqu'un a t-il conservé ce script ? ou sinon, connait une solution pour décoder du base64 avec un noyau 8.1.7 ? D'avance merci
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 440 ![]() |
Tu peux pas le coder en pl ?
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 530 ![]() |
Et bien, si je pouvais le faire, je ne posterais pas cette question ici
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 440 ![]() |
J'essaye de te coder ça
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#5 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 530 ![]() |
Le but est de remplacer ceci:
Code :
UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(LR$Raw)) Code :
rawData := utl_encode.BASE64_DECODE(utl_raw.CAST_TO_RAW(PC$Chunk));
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 440 ![]() |
Bon, je t'ai fait le ENCODE, c'est du brut (variables non normées, dbms, etc...)
J'améliorerai après avoir fait le decode. ma référence : http://en.wikipedia.org/wiki/Base64 Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
00
|
|
|
#7 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 530 ![]() |
Super
![]() Monsieur est un prince
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#8 | ||
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 530 ![]() |
Ce n'est pas aussi simple que cela.
Voici le code utilisé pour récupérer des tranches d'image (JPEG) stockée dans un BLOB: Code :
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
||
|
|
00
|
|
|
#9 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 530 ![]() |
Encoder B64 java:
/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8 Encoder PL/SQL: /9j/4BA=SkZJRgB=AC==AQB=/D==20D=CAG=BgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aH Apparament, ton encodeur ne fournit pas la même chaine que Java
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#10 | ||||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 440 ![]() |
Attention : L'encodage d'une longue chaine en b64 nécessite obligatoirement de découper en petites chaine de longueur multiple de 3
Le = (ou ==) dans la chaine encodée indique une fin de chaine (lorsque celle ci n'est pas multiple de 3) Bon, pour le RAW, je ne sais pas j'ai rarement codé avec, je vais voir comment ça marche. Sinon voici le package en version varchar(2000) Code :
Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||||
|
|
00
|
|
|
#11 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 530 ![]() |
Merci beaucoup pour le boulot.
![]() Toutefois, cela semble ne pas fonctionner avec les contenus binaires stockés dans les BLOB
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#12 | ||||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 440 ![]() |
Tss.. attends.. laisse moi le temps de coder
Voici avec une fonction encode pour du RAW (qui est simplement le codage hexa, équivalent au résultat de dbms_log.substr) Petite précision, l'encodage RAW (=hexa)=> B64 nécessite donc des tailles de chunk multiples de 6. Code :
Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||||
|
|
10
|
|
|
#13 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 530 ![]() |
oui, t'as bon
![]() Cependant (je fais mon gros lourd) c'est très lent. Est-il possible de passer les chunks de 2000 à un multiple plus elevé, 8192 ou 16384 ? en fait, passer à 16384 n'accélère rien. c'est l'algo qui est lent. Je vais voir comment optimiser.
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#14 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 530 ![]() |
pour info, il faut 9 secondes pour une image de 24Ko
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#15 | |||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 440 ![]() |
C'est sur l'algo est un peu lent .. mais pas au point où tu le dis, j'en suis à 2.3s pour 47 Ko
Enfin ça reste très loin des perfs de utl_encode (test sur une base 9) Citation:
Ca y est, résultat : Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
|||
|
|
00
|
|
|
#16 | ||||||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
en b64 on groupe par 6bit, en raw on groupe par 8bit.
donc 3 octets = 4 caractères b64 avec une petite table de conversion pour 3 octets, on obtient Code :
Code :
Code :
PS: j'ai corrigé un petit bug ... |
||||||
|
10
|
|
|
#17 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 530 ![]() |
Merci Laurent
ça c'est la fonction d'encodage, mais il parait plus rarissime, voir impossible de trouver le code de décodage tu aurais cela en stock ?
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#18 | ||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
tu peux t'aider d'une table, style
Code :
|
||
|
00
|
|
|
#19 | |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 530 ![]() |
Citation:
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
|
00
|
|
|
#20 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 440 ![]() |
Suite à la procédure de codage que tu m'as envoyé, j'ai fait le decodage.
Code :
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
10
|
Copyright © 2000-2012 - www.developpez.com