Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/06/2011, 14h23   #1
Membre du Club
 
Inscription : février 2003
Messages : 138
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 138
Points : 53
Points : 53
Par défaut Longueur d'un champ LONG

Bonjour

Je voudrais récupérer les longueurs des contenus d'un champ LONG.
J'ai essayé avec le fonction length() mais rien à faire.
J'ai essayé de convertir mon champ avec to_lob, substr ... et j'ai constamment une erreur 00932.

Merci de vos lumières, je sèche un peu.
dd16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 14h48   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 810
Points : 5 810
working with long columns
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 16h36   #3
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 925
Points : 4 547
Points : 4 547
LONG est moyenâgeux.. pour y accéder depuis PLSQL, il faut employer l'ennuyeux package DBMS_SQL.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE OR REPLACE FUNCTION size_of_long(r rowid, column_name varchar2, table_name varchar2) RETURN number IS
  c number := dbms_sql.open_cursor;  f number;  v varchar2(32767);
  len number := 0;  tot_len number := 0;  pos number := 0;
begin
  dbms_sql.parse(c,'select "'||column_name||'" from "'||table_name||'" where rowid='''||r||'''',dbms_sql.native);
  dbms_sql.define_column_long(c,1);
  f:= dbms_sql.execute_and_fetch(c);
  loop
    dbms_sql.column_value_long(c,1,32767,pos,v,len);
    exit when len=0;
    pos := pos + len;
    tot_len := tot_len +len;
  end loop;
  RETURN tot_len;
end;
Code :
1
2
3
4
5
SQL> SELECT size_of_long(rowid,'X','T'),x FROM t
 
SIZE_OF_LONG(ROWID,'X','T') X                                                 
--------------------------- ----------------------
                          9 blablabla
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/06/2011, 10h03   #4
Membre du Club
 
Inscription : février 2003
Messages : 138
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 138
Points : 53
Points : 53
Merci toutes cour les informations.

Je suis obligé d'employer le type LONG pour l'instant car le OleDB de Microsoft ne sais pas gérer les CLOB et j'ai des soucis avec les OleDB d'Oracle sous Delphi.
dd16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h56.


 
 
 
 
Partenaires

Hébergement Web