Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels 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 26/07/2007, 18h53   #1
Membre Expert
 
Homme sébastien
Développeur informatique
Inscription : octobre 2006
Messages : 1 173
Détails du profil
Informations personnelles :
Nom : Homme sébastien
Âge : 29
Localisation : Argentine

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : octobre 2006
Messages : 1 173
Points : 1 372
Points : 1 372
Envoyer un message via Skype™ à Vld44
Par défaut Oracle 9i : récupérer la valeur d'un champ de type "LONG"

Salut,

Je souhaite faire une requête de ce style

SELECT FROM table WHERE field1 LIKE '%pattern'

Or, field1 est de type "long" donc j'obtiens une erreur "number attendu"

Comment feriez vous ?

Le contenu de ce champ field1 est celui du 'search_condition' de ALL_CONSTRAINTS.

Merci à vous, bonne soirée !
Vld44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2007, 08h36   #2
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Vous pouvez créer une une table temporaire pour transformer la colonne LONG en CLOB et utiliser ensuite DBMS_LOB ou une autre API en fonction du language utilisé.
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2007, 08h59   #3
Membre Expert
 
Homme sébastien
Développeur informatique
Inscription : octobre 2006
Messages : 1 173
Détails du profil
Informations personnelles :
Nom : Homme sébastien
Âge : 29
Localisation : Argentine

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : octobre 2006
Messages : 1 173
Points : 1 372
Points : 1 372
Envoyer un message via Skype™ à Vld44
merci.

Je travaille directement sous pl/sql, et mon but est d'extraire le contenu d'une contrainte WHERE constraint_type = 'C' (de type check) afin d'éventuellement détecter un check "IS NOT NULL" sur x colonnes.

Pensez-vous qu'il y ait une autre méthode (à tout hasard) pour valider une check constraint de ce type ?

Merci, bonne journée.
Vld44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2007, 09h19   #4
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Vous pouvez utiliser la fonction suivante qui transforme le LONG en VARCHAR2 car il est problable que le texte de la contrainte est inférieur à 32K:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
dev001> DROP TABLE t;
 
TABLE dropped.
 
dev001>
dev001> CREATE TABLE t (x int PRIMARY KEY);
 
TABLE created.
 
dev001>
dev001> ALTER TABLE t ADD constraint c CHECK (x > 0);
 
TABLE altered.
 
dev001>
dev001> CREATE OR REPLACE FUNCTION longsubstr( p_constraint_name IN varchar2)
  2                                         RETURN varchar2
  3  AS
  4     l_tmp long;
  5  begin
  6     SELECT search_condition INTO l_tmp FROM user_constraints WHERE constrain
t_name = p_constraint_name;
  7     RETURN substr( l_tmp , 1, 32767);
  8  end;
  9  /
 
FUNCTION created.
 
dev001> SHOW errors
No errors.
dev001>
dev001> SELECT table_name, constraint_type, longsubstr(constraint_name) FROM USE
r_constraints WHERE table_name = 'T';
 
TABLE_NAME                     C
------------------------------ -
LONGSUBSTR(CONSTRAINT_NAME)
--------------------------------------------------------------------------------
 
T                              P
 
 
T                              C
x > 0
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2007, 11h13   #5
Membre Expert
 
Homme sébastien
Développeur informatique
Inscription : octobre 2006
Messages : 1 173
Détails du profil
Informations personnelles :
Nom : Homme sébastien
Âge : 29
Localisation : Argentine

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : octobre 2006
Messages : 1 173
Points : 1 372
Points : 1 372
Envoyer un message via Skype™ à Vld44
Merci, ça marche super.

Je suis très surpris que dans une fonction substr fonctionne, alors que directement dans une requête ce n'est pas le cas.

En tout cas, merci
a+
Vld44 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 10h24.


 
 
 
 
Partenaires

Hébergement Web