Voir le flux RSS

En Oracle, convertir type LONG en CLOB

D'après mon expérience modeste, de plus d'une décennie, dans le développement sous PL/SQL et l'administration de base de données Oracle, je trouve que le type LONG est difficile à le manipuler, surtout en termes de conversion vers les types « LOB », ainsi de création de snapshot...
Je vous présente cet article qui expose une astuce sur la conversion de type LONG en type CLOB, et dans la même base de données, et dans une base de données distante.
La seul fonction que la trouve utile, c'est bien la fonction TO_LOB, mais cette fonction on ne peut être utilisée que dans :

  • Le mode de création d'une table sous la syntaxe



  • Ou le mode d’insertion sous la syntaxe :



  • Ou dans les creations des snapshots sous la syntaxe


Ces trois méthodes fonctionnent si on est dans une base de données locale. Autrement dit, ça ne marche pas si on est dans base de données distante. Et en plus, la seule fonction qu’on peut l’utiliser dans une interrogation pour faire une conversion est dbms_metadata_util.long2clob qui elle-même ne marche pas si la base de données est distante.
A cet effet, j'ai créé une fonction simple générique qui aide à convertir de type LONG en type CLOB, quel que soit la nature de la base de données, locale ou distante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
create or replace function z_test(p_table varchar2, p_col_long varchar2,p_rowid varchar2) return clob is
  Result long;
begin
execute immediate  'select '|| p_col_long||
 ' from '||p_table||
'  where rowid='''||p_rowid||'''' into Result;
  return(Result);
end;
Exécution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
select   t.sowner,(z_test('sys.snap$@tech.world','query_txt',rowid)),t.vname  from sys.snap$@tech.world t;

  1. Oracle, transformer lignes en colonne

    par , 12/07/2017 à 14h52 (En Oracle, convertir type LONG en CLOB)
    extraire code source de procédure, fonction...comme suite

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT name,
     
                XMLAGG (
                   XMLELEMENT (
                     X,
                     text  )order by line).
                EXTRACT ('//text()')
     
                po_concat
        FROM sys.all_source t
       WHERE owner ='GMAOC'
    gROUP BY name;

    Mis à jour 12/07/2017 à 15h17 par kolodz ([Modération]Ajout balise CODE)

    Catégories
    Programmation
  2. [Actualité] Oracle, calcul des valeurs des noeuds d'un arbre

    par , 07/01/2016 à 15h05 (En Oracle, convertir type LONG en CLOB)
    J'ai développé une procédure qui calcule valeurs des nœuds d'un arbre donné.
    La procédure base sur l'idée de récursivité, c’est vraiment un casse tête pour l’implémenter.
    Donc, j'ai pensé à modéliser mon idée sous un SQL/Oracle en mettant la requête générique valable pour n'importe quel arbre .
    L'arbre doit être introduit dans une table. cette dernière comporte 03 champs: pere, fils et valeur.

    Les nœuds sont présentés comme suite dans la table:
    ...

    Mis à jour 17/05/2017 à 10h58 par islamov2000

    Catégories
    Programmation
  3. [Actualité] Oracle, script quotidien export

    par , 17/12/2015 à 15h25 (En Oracle, convertir type LONG en CLOB)
    Je vous présente une méthode simple pour une sauvegarde (export) quotidienne de la base de données.

    Auparavant, Nous préparons un script (.SQL) qui a pour but de générer quotidiennement un nouveau fichier (.BAT) où nous trouvons une ligne de commande EXP.
    Ce sript SQL s'exécute via un fichier BATCH principale qui se lance à l'aide d'une tache planifiée sous Windows.
    Bien sûr, il faut adapter le script SQL à votre configuration de votre base de données ainsi les répertoires. ...
    Catégories
    Programmation
  4. Transformer une table en une vue matérialisée

    par , 09/12/2015 à 14h47 (En Oracle, convertir type LONG en CLOB)
    Citation Envoyé par islamov2000 Voir le message
    On a plusieurs base de données dans différents sites qui sont reliées à une base de données consolidé.

    La préoccupation est que les données fondamentales ne sont pas uniformes dans les bases de données, pour cela on a pensé de standardiser ces données en mettant les données en question dans la base de données consolidé, et les autres base de données vont les recupérer directement, sachant que toutes les bases sont en production.

    Là, nous avons pensé aux snapshots sans perturber
    ...
  5. En Oracle, convertir type LONG en CLOB

    par , 09/12/2015 à 10h52 (En Oracle, convertir type LONG en CLOB)
    D'après mon expérience modeste, de plus d'une décennie, dans le développement sous PL/SQL et l'administration de base de données Oracle, je trouve que le type LONG est difficile à le manipuler, surtout en termes de conversion vers les types « LOB », ainsi de création de snapshot...
    Je vous présente cet article qui expose une astuce sur la conversion de type LONG en type CLOB, et dans la même base de données, et dans une base de données distante.
    La seul fonction que la trouve utile, ...

    Mis à jour 24/04/2016 à 21h43 par LittleWhite (Coloration code)

    Catégories
    Programmation