Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
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 27/07/2007, 16h09   #1
Membre régulier
 
Avatar de souch
 
Inscription : juin 2003
Messages : 145
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2003
Messages : 145
Points : 95
Points : 95
Par défaut Comparer deux BLOB dans un trigger ?



est il possible de comparer la similaritée de 2 blob, nottament dans le code d'un trigger ? (o10g)

Code :
1
2
3
4
 
IF (:NEW.MONBLOB <> :OLD.MONBLOB) Then 
  :NEW.MONBLOB_A_CHANGE:= 1;
End IF;
marche po ...

merci :-)
__________________
D7/2007 - Asphyre 4.1
souch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2007, 16h13   #2
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

Informations professionnelles :
Activité : Chef de projet
Secteur : Bâtiment

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Code :
1
2
3
4
5
6
7
8
 
DBMS_LOB.COMPARE (
   lob_1            IN BLOB,
   lob_2            IN BLOB,
   amount           IN INTEGER := 4294967295,
   offset_1         IN INTEGER := 1,
   offset_2         IN INTEGER := 1)
  RETURN INTEGER;
__________________
Garuda गरूड
Brahmâ la Guerre et Vishnu la Paix

Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2007, 16h58   #3
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
Il faut aussi savoir qu'un trigger n'est pas obligatoirement déclenché lorsque une colonne CLOB/BLOB est mise à jour: cela dépend du type de mise à jour.

Exemple:


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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
dev001> 
dev001> SET serveroutput ON;
dev001> SET long 10
dev001> SET NULL N_U_L_L
dev001> 
dev001> SELECT * FROM v$version;
 
BANNER                                                                          
----------------------------------------------------------------                
Oracle DATABASE 10g Enterprise Edition Release 10.2.0.2.0 - Prod                
PL/SQL Release 10.2.0.2.0 - Production                                          
CORE	10.2.0.2.0	Production                                                      
TNS FOR 32-bit Windows: Version 10.2.0.2.0 - Production                         
NLSRTL Version 10.2.0.2.0 - Production                                          
 
dev001> 
dev001> DROP TABLE t;
 
TABLE dropped.
 
dev001> 
dev001> CREATE TABLE t (x int, y clob);
 
TABLE created.
 
dev001> 
dev001> CREATE TRIGGER tau
  2  after UPDATE ON t
  3  FOR each row
  4  begin
  5  dbms_output.put_line('<<trigger after update>>');
  6  end;
  7  /
 
TRIGGER created.
 
dev001> SHOW errors
No errors.
dev001> 
dev001> CREATE TRIGGER tbu
  2  before UPDATE ON t
  3  FOR each row
  4  begin
  5  dbms_output.put_line('<<trigger before update>>');
  6  end;
  7  /
 
TRIGGER created.
 
dev001> SHOW errors
No errors.
dev001> 
dev001> INSERT INTO t VALUES (1, '111');
 
1 row created.
 
dev001> UPDATE t SET y='222' WHERE x=1;
<<TRIGGER before update>>                                                       
<<TRIGGER after update>>                                                        
 
1 row updated.
 
dev001> SELECT * FROM t;
 
         X Y                                                                    
---------- ----------                                                           
         1 222                                                                  
 
dev001> UPDATE t SET y=empty_clob() WHERE x=1;
<<TRIGGER before update>>                                                       
<<TRIGGER after update>>                                                        
 
1 row updated.
 
dev001> SELECT * FROM t;
 
         X Y                                                                    
---------- ----------                                                           
         1 N_U_L_L                                                              
 
dev001> commit;
 
Commit complete.
 
dev001> 
dev001> declare vcl clob;
  2  begin
  3  SELECT y INTO vcl FROM t WHERE x=1 FOR UPDATE;
  4  dbms_lob.WRITE(vcl, 3, 1, '333');
  5  commit;
  6  end;
  7  /
 
PL/SQL procedure successfully completed.
 
dev001> SHOW errors
No errors.
dev001> SELECT * FROM t;
 
         X Y                                                                    
---------- ----------                                                           
         1 333                                                                  
 
dev001> 
dev001> exit
__________________
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 28/07/2007, 00h25   #4
Membre régulier
 
Avatar de souch
 
Inscription : juin 2003
Messages : 145
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2003
Messages : 145
Points : 95
Points : 95
Merci pour ces réponses rapides, clair et détaillé :-)
__________________
D7/2007 - Asphyre 4.1
souch 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 20h29.


 
 
 
 
Partenaires

Hébergement Web