J'ai une table Oracle qui contient un champ de type LONG RAW contenant des données de caractères ASCII. Comment puis-je écrire une requête ou une vue qui convertira cela en une chaîne de caractères plus facilement consommée? Ceux-ci vont toujours être des caractères à un octet, FWIW.Conversion de valeurs Oracle brutes longues Oracle à d'autres types
1
A
Répondre
2
Peut-être
select ...., to_lob(long_raw) from old_table
(http://www.psoug.org/reference/convert_func.html)
ou
UTL_RAW.CAST_TO_VARCHAR2(b)
0
Je trouve cette citation:
Dans Oracle9i, vous pouvez même:
alter table OLD_TABLE modifier (c clob );
pour le convertir.
Voir ici: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1037232794454
Modifier
La longueur maximale d'une colonne de varchar2 est 4000. Est-ce trop court?
0
J'ai trouvé que cela fonctionne bien sur les types de données CLOB. Je crois que la même chose serait vraie pour les types de LOB.
create or replace function lob2char(clob_col clob) return varchar2 IS
buffer varchar2(4000);
amt BINARY_INTEGER := 4000;
pos INTEGER := 1;
l clob;
bfils bfile;
l_var varchar2(4000):='';
begin
LOOP
if dbms_lob.getlength(clob_col)<=4000 THEN
dbms_lob.read (clob_col, amt, pos, buffer);
l_var := l_var||buffer;
pos:=pos+amt;
ELSE
l_var:= 'Cannot convert. Exceeded varchar2 limit';
exit;
END IF;
END LOOP;
return l_var;
EXCEPTION
WHEN NO_DATA_FOUND THEN
return l_var;
END;
INSERT INTO NEWTABLE (NEWCOLUMN) SELECT RTRIM(lob2char(OLDCOLUMN)) FROM OLDTABLE;
+0
À quoi sert la boucle? –
Questions connexes
- 1. Conversion de SQL Server à Oracle SQL
- 2. Oracle Valeurs par défaut
- 3. Conversion Oracle Forms 10 à Java
- 4. C# datatypes -> types de données oracle
- 5. Oracle 11g restauration à froid?
- 6. Listes conditionnelles de valeurs dans Oracle APEX?
- 7. Multiplier les valeurs longues?
- 8. Oracle SQL * Loader obtenant des valeurs CDATA
- 9. Comparaisons Oracle NUMBER
- 10. De MySQL, aller à Oracle: les pièges
- 11. tableaux dans Oracle SQL
- 12. Configurer Oracle Text pour indexer les valeurs de plusieurs colonnes dans les tables Oracle
- 13. Oracle Minus - À partir d'une liste de valeurs, comment compter uniquement les valeurs non inversées?
- 14. Quand Oracle indexe-t-il des valeurs de colonne nulles?
- 15. "Smart" clause where pour les valeurs de filtrage (Oracle 10g)
- 16. Erreur lors de la comparaison des valeurs dans Oracle
- 17. La conversion d'une requête dans Oracle fusion mysql mySQL requête
- 18. Évaluez Oracle Expression
- 19. Accélérer NHibernate Appels à Oracle?
- 20. Oracle à la syntaxe MySQL
- 21. Comment obtenir les valeurs des paramètres de liaison à partir de l'objet Oracle JDBC PreparedStatement
- 22. Oracle-sqlplus
- 23. ORACLE ROWNUM
- 24. Oracle-SQLPLUS
- 25. Partitionnement Oracle
- 26. Sélection de synonymes Oracle
- 27. Autorisations de déclencheur Oracle
- 28. Oracle - Nombre de varchar
- 29. Oracle DataGuard
- 30. Oracle Datadiff
Une application existante et assez fragile utilise actuellement cette table, donc je préfère ne pas modifier la table existante de peur de renverser le château de cartes. –