Travail avec objet BLOB Oracle
J'ai une instruction SQL comme ceci-
select utl_encode.utl_encode.base64_encode(IMAGE1)
from IPHONE.accidentreports
where "key" = 66
Mais quand je le lance, j'obtiens cette erreur-
ORA-00904: "UTL_ENCODE"."UTL_ENCODE"."BASE64_ENCODE": invalid identifier
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 2 Column: 8
Je veux convertir mon BLOB
objet dans BASE64
. Comment pourrait-il être fait?
utl_encode.utl_encode
- Pourquoiutl_encode
deux fois?utl_encode
est un Package, et, sauf si vous avez une DB schéma nomméutl_encode
ce-utl_encode.base64_encode
est la syntaxe correcte.- deux fois il suffit de coller bug 🙂 de cource il était une fois 🙂
Vous devez vous connecter pour publier un commentaire.
Depuis le UTL_ENCODE.BASE64_ENCODE fonction travaille sur les RAWs, il va travailler avec des Gouttes jusqu'à 32767 octets dans
PL/SQL
ou 4000 octets en SQL.Si vos images sont plus grandes, vous devrez écrire votre propre fonction. Voici un exemple:
Tout d'abord
UTL_ENCODE.BASE64_ENCODE
travaille sur la représentation binaire d'unRAW
valeur et de la fonction ressemble à:Aussi, compte tenu de
IMAGE1
est deRAW
type:Plus sur
CAST
ing ici.IMAGE1
n'est pasRAW
. Le type de données deIMAGE1
doit êtreRAW
pasBLOB
ouCLOB
. Mise à jour de réponse.BLOB
est Grand objet Binaire. Vous pouvezCAST
unLOB
àRAW
et ensuite utiliser leBASE64
fonction sur elle. Si vous avez remarqué ma mise à jour de la réponse, vous verriez que jeCAST
laIMAGE1
colonne en le passant à la fonction.