IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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. fenetre de connexion (login window)

    par , 23/07/2020 à 17h12 (En Oracle, convertir type LONG en CLOB)
    salem

    en attaché écran de connexion oracle forms ".fmb"
    Miniatures attachées Fichiers attachés
  2. transposer ligne en colonne avec la fonction wm_concat d'oracle

    par , 24/04/2018 à 13h29 (En Oracle, convertir type LONG en CLOB)
    En recherchant une méthode qui transpose des lignes en colonnes j'ai trouvé la fonction wm_concat d'oracle qui est rapide et simple.
    Auparavant, j'utilisais la méthode de génération de xml puis l'extraction des données. cette méthode est gourmande en termes de occupation de mémoire & temps d’exécution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    COLUMN employees FORMAT A50
     
    SELECT deptno, wm_concat(ename) AS employees
    FROM   emp
    GROUP BY deptno;
     
        DEPTNO EMPLOYEES
    ----------
    ...
    Catégories
    Programmation
  3. 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
  4. [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
  5. [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. ...

    Mis à jour 09/09/2018 à 15h45 par LittleWhite (Coloration du code)

    Catégories
    Programmation
Page 1 sur 2 12 DernièreDernière