<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DkcNSX88cSp7ImA9WhRUFUw.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835</id><updated>2012-01-25T18:54:58.179+01:00</updated><category term="script SQL" /><category term="bases" /><category term="techniques" /><category term="paramétrage" /><category term="optimisation" /><category term="jointure" /><category term="PL_SQL" /><category term="sql*loader" /><category term="index" /><category term="fonction" /><category term="maintenance" /><category term="migration" /><category term="vue" /><category term="tablespace" /><category term="sqlplus" /><title>Aide Oracle</title><subtitle type="html">Tuyaux et astuces pour migrer, optimiser et comprendre sa base de données Oracle par l'exemple.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.aide-oracle.net/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.aide-oracle.net/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>memento</name><uri>http://www.blogger.com/profile/17072005967359005812</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>57</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/aide-oracle/WBya" /><feedburner:info uri="aide-oracle/wbya" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DkcNSX8zfyp7ImA9WhRUFUw.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-1354524933154100949</id><published>2011-09-02T13:54:00.004+02:00</published><updated>2012-01-25T18:54:58.187+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-25T18:54:58.187+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="fonction" /><title>substr et opération sur les chaînes</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/1354524933154100949?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/1354524933154100949?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/UpK_TbFomUs/substr-et-operation-sur-les-chaines.html" title="substr et opération sur les chaînes" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dZmIMnz79OCznsQ2meRLBis_KGM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dZmIMnz79OCznsQ2meRLBis_KGM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dZmIMnz79OCznsQ2meRLBis_KGM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dZmIMnz79OCznsQ2meRLBis_KGM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;L'instruction substr d'oracle permet d'extraire une sous-chaîne de caractères à partir d'une chaîne, selon la position des caractères.

-- supprimer les n-premiers caractères (n=12)
select substr('1er exemple de substr', 13) from dual;
=&amp;gt; 'de substr'

-- prendre les k caractères après n (n=4, ; k=7)
select substr('2nd exemple de substr', 5, 7) from dual;
=&amp;gt; 'exemple'

-- prendre les n-derniers &lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/UpK_TbFomUs" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2011/09/substr-et-operation-sur-les-chaines.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYDQ3czfCp7ImA9WhdRGUo.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-288185237169029961</id><published>2011-08-10T13:46:00.002+02:00</published><updated>2011-08-10T13:52:52.984+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-10T13:52:52.984+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="maintenance" /><category scheme="http://www.blogger.com/atom/ns#" term="tablespace" /><title>Renommage ou déplacement d'un datafile</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/288185237169029961?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/288185237169029961?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/FOMsjancoS8/renommage-ou-deplacement-dun-datafile.html" title="Renommage ou déplacement d'un datafile" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Gmyxvk6Ral1EiF0u8sRIdFTjqlo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gmyxvk6Ral1EiF0u8sRIdFTjqlo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Gmyxvk6Ral1EiF0u8sRIdFTjqlo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Gmyxvk6Ral1EiF0u8sRIdFTjqlo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Il arrive que l'on ait à renommer ou déplacer un datafile (utilisation d'un disque plus rapide, harmonisation du nommage, ...). Dans ce cas il faut indiquer à notre base de données oracle le nouvel emplacement :

$ sqlplus / as sysdba

SQL&amp;gt; Set linesize 140
SQL&amp;gt; column FILE_NAME format A80
SQL&amp;gt; select TABLESPACE_NAME , FILE_NAME, FILE_ID from dba_data_files ;
TABLESPACE_NAME   FILE_NAME&lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/FOMsjancoS8" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2011/08/renommage-ou-deplacement-dun-datafile.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQHSX8-cCp7ImA9WhRXFks.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-7123369877473368964</id><published>2011-01-13T20:52:00.002+01:00</published><updated>2011-12-23T19:52:18.158+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-23T19:52:18.158+01:00</app:edited><title>APEX inaccessible</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/7123369877473368964?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/7123369877473368964?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/p9PocxOVL_g/apex-inaccessible.html" title="APEX inaccessible" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/X9OOXx1r74jQxAUH7fJD8BWJPn8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/X9OOXx1r74jQxAUH7fJD8BWJPn8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/X9OOXx1r74jQxAUH7fJD8BWJPn8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/X9OOXx1r74jQxAUH7fJD8BWJPn8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Si votre URL apex est inaccessible, plusieurs raisons possibles, donc plusieurs pistes à explorer : 


En changeant de port (en cas de conflit de serveur web)

EXEC DBMS_XDB.SETHTTPPORT(8080);


En ouvrant les accès via le réseau (en cas d'utilisation du service via le réseau)
exec dbms_xdb.setListenerLocalAccess(false);


En modifiant le listener.ora (en cas d'utilisation d'un serveur web tiers)&lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/p9PocxOVL_g" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2011/01/apex-inaccessible.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIFR34_fip7ImA9Wx9XGUk.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-823853077042170409</id><published>2011-01-12T23:37:00.005+01:00</published><updated>2011-01-13T19:15:16.046+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-13T19:15:16.046+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="techniques" /><category scheme="http://www.blogger.com/atom/ns#" term="fonction" /><title>Les directories : accéder à des ressources systèmes</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/823853077042170409?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/823853077042170409?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/IfMlfc1FJOI/les-directories-acceder-des-ressources.html" title="Les directories : accéder à des ressources systèmes" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IhXKiHAq2hwM5pwZ60_NMbhLUb8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IhXKiHAq2hwM5pwZ60_NMbhLUb8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IhXKiHAq2hwM5pwZ60_NMbhLUb8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IhXKiHAq2hwM5pwZ60_NMbhLUb8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Un directory est un objet oracle permettant d'accéder à des ressources du systèmes d'exploitation (quel qu'il soit) afin de procéder à des opérations de lectures ou d'écritures de fichiers par exemple.

vues du dictionnaire concernées :
- {all/dba}_directories

GRANT associés :
ALL_TAB_PRIVS
GRANT {CREATE/DROP} ANY DIRECTORY;
GRANT READ ON DIRECTORY mon_dir TO PUBLIC;

Exemple :
$ mkdir /tmp/&lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/IfMlfc1FJOI" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2011/01/les-directories-acceder-des-ressources.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8MQHs9cCp7ImA9Wx9XGEo.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-4523142403650688609</id><published>2011-01-12T23:05:00.001+01:00</published><updated>2011-01-12T23:21:21.568+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-12T23:21:21.568+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sqlplus" /><category scheme="http://www.blogger.com/atom/ns#" term="sql*loader" /><title>Insérer un CLOB par sql*Loader</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/4523142403650688609?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/4523142403650688609?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/FZOvEkVqzow/inserer-un-clob-par-sqlloader.html" title="Insérer un CLOB par sql*Loader" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/A9b5jnRKtWL8vxeK4I_UpNitMo0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A9b5jnRKtWL8vxeK4I_UpNitMo0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/A9b5jnRKtWL8vxeK4I_UpNitMo0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A9b5jnRKtWL8vxeK4I_UpNitMo0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Oracle intègre un type de données CLOB particulièrement adapter au stockage de longs textes (le type LONG est à proscrire depuis la 9i).


Cependant lorsqu'un client désire insérer une ligne contenant un CLOB, certaines limites peuvent être problématiques :
- un varchar2 ne peut dépasser 4000 caractères ; il est donc impossible de faire cette insertion via un ordre SQL qui effectue une conversion&lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/FZOvEkVqzow" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2011/01/inserer-un-clob-par-sqlloader.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4ARHw4fip7ImA9Wx9REks.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-8331323476816967753</id><published>2010-11-27T15:37:00.007+01:00</published><updated>2010-12-13T20:19:05.236+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-13T20:19:05.236+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="bases" /><category scheme="http://www.blogger.com/atom/ns#" term="paramétrage" /><title>La gestion des plans d'exécution en cache - LRU/MRU</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/8331323476816967753?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/8331323476816967753?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/1Q-7f6p4Pbo/la-gestion-des-plans-dexecution-en.html" title="La gestion des plans d'exécution en cache - LRU/MRU" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_G0OaFmOWAmY/TQZueJwG-8I/AAAAAAAAEYE/EyOMFlJYvtA/s72-c/lru.png" height="72" width="72" /><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zL3vRfBYzoSg-dwAkvkbgmQkFgM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zL3vRfBYzoSg-dwAkvkbgmQkFgM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zL3vRfBYzoSg-dwAkvkbgmQkFgM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zL3vRfBYzoSg-dwAkvkbgmQkFgM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Dans une application informatique, la plupart des traitements sont exécutés plusieurs fois dans la même journée. Dans le cas de traitement OLTP, ceux-ci peuvent devenir très nombreux à la valeur de recherche près. C'est pour cette raison que l'on préconise l'utilisation de bind variables, afin que le plan d'exécution ne soit pas recalculés à chaque exécution. Mais alors, dans le cas d'un grand &lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/1Q-7f6p4Pbo" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2010/11/la-gestion-des-plans-dexecution-en.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIGRnwzeSp7ImA9Wx9TF0U.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-6726846892278365793</id><published>2010-11-26T16:12:00.001+01:00</published><updated>2010-11-26T16:15:27.281+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-26T16:15:27.281+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="optimisation" /><category scheme="http://www.blogger.com/atom/ns#" term="index" /><category scheme="http://www.blogger.com/atom/ns#" term="paramétrage" /><title>Le bind peeking (10g et antérieure)</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/6726846892278365793?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/6726846892278365793?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/Y_vRFQY1wzo/le-bind-peeking.html" title="Le bind peeking (10g et antérieure)" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PxMxr_RL6yu-1S4oMuZlvZ-fZnE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PxMxr_RL6yu-1S4oMuZlvZ-fZnE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PxMxr_RL6yu-1S4oMuZlvZ-fZnE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PxMxr_RL6yu-1S4oMuZlvZ-fZnE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;A partir de l'article concernant les binds variables, il a été mis en évidence l'importance des bind variables pour les requêtes régulièrement utilisées (OLTP) ; cependant, un phénomène peut parfois apparaître et fausser complètement les plans d'exécution de la journée ; il s'agit du bind peeking. Ceci se traduit par l'utilisation d'un mauvais plan d'exécution car élaboré par des variables non &lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/Y_vRFQY1wzo" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2010/11/le-bind-peeking.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUCR389fip7ImA9Wx9TGEs.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-6920139306424084757</id><published>2010-03-18T16:04:00.007+01:00</published><updated>2010-11-27T15:14:26.166+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-27T15:14:26.166+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="optimisation" /><category scheme="http://www.blogger.com/atom/ns#" term="index" /><title>Les histogrammes associés aux statistiques</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/6920139306424084757?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/6920139306424084757?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/c76zONYDTLQ/les-histogrammes.html" title="Les histogrammes associés aux statistiques" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GxUEcOZWL658i0fS0Ed6N-a26k0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GxUEcOZWL658i0fS0Ed6N-a26k0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GxUEcOZWL658i0fS0Ed6N-a26k0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GxUEcOZWL658i0fS0Ed6N-a26k0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Les histogrammes sous Oracle permettent, d'une manière générale, de connaître une valeur résultante pour un intervalle de données sources défini.
Il existe, par exemple, un histogramme afin de prendre en compte l'impact d'un paramètre sur les performances générales. Cependant, cet article ne parlera que des histogrammes d'hétérogénéité de valeurs dans une (ou plusieurs) colonne(s) d'une table.

&lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/c76zONYDTLQ" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2010/03/les-histogrammes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4AQHYyfip7ImA9WhRXFks.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-5572580417231338340</id><published>2010-01-28T19:42:00.019+01:00</published><updated>2011-12-23T20:02:21.896+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-23T20:02:21.896+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="bases" /><category scheme="http://www.blogger.com/atom/ns#" term="fonction" /><title>Les secrets de la fonction DECODE</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/5572580417231338340?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/5572580417231338340?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/PXGKtkhxNdU/les-secrets-de-la-fonction-decode.html" title="Les secrets de la fonction DECODE" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jw6vfbmi2XHnvmk4ChV1KGW_H8o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jw6vfbmi2XHnvmk4ChV1KGW_H8o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jw6vfbmi2XHnvmk4ChV1KGW_H8o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jw6vfbmi2XHnvmk4ChV1KGW_H8o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;La fonction decode sous Oracle permet de faire un traitement de conditions sur les données (que ce soit au niveau de la donnée ramenée ou au niveau du filtre de la requête).
Ainsi, on transforme la donnée dans une requête SQL, sans passer par un language informatique supérieur (PL, ou autre) :

decode({valeur de test}, {valeur de comparaison}, {valeur retournée en cas de correspondance}, [{valeur&lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/PXGKtkhxNdU" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2010/01/les-secrets-de-la-fonction-decode.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIBQHs_eip7ImA9WxBRFkU.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-8990361551021935729</id><published>2009-09-09T15:42:00.012+02:00</published><updated>2010-01-05T11:15:51.542+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-05T11:15:51.542+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PL_SQL" /><category scheme="http://www.blogger.com/atom/ns#" term="bases" /><title>Les triggers</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/8990361551021935729?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/8990361551021935729?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/9E4zCv3oT10/les-triggers.html" title="Les triggers" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eAKIEjS2YTYdIqtP2J3y0A_3CnU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eAKIEjS2YTYdIqtP2J3y0A_3CnU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eAKIEjS2YTYdIqtP2J3y0A_3CnU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eAKIEjS2YTYdIqtP2J3y0A_3CnU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Les triggers permettent d'exécuter du code lors d'un évènement particulier. La traduction littéral est déclencheur.


Le trigger sera exécuté dans la même transaction que l'ordre sur lequel il déclenche (en cas de rollback ou commit, le traitement sera annulé ou validé au même titre que l'ordre lui-même).


Trigger FOR EACH ROW
Exemple de création d'un trigger :

Création simple d'un trigger &lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/9E4zCv3oT10" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2009/09/les-triggers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8CQXkzcSp7ImA9WxBWFEs.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-183793525822960615</id><published>2009-07-29T10:05:00.006+02:00</published><updated>2010-02-06T15:01:00.789+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-06T15:01:00.789+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="optimisation" /><category scheme="http://www.blogger.com/atom/ns#" term="techniques" /><category scheme="http://www.blogger.com/atom/ns#" term="paramétrage" /><title>Plans d'exécution stockés</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/183793525822960615?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/183793525822960615?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/2IL6Fno9Djk/plans-dexecution-stockees.html" title="Plans d'exécution stockés" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iRPNyLugSy0E_AxHPlJWO8f48pY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iRPNyLugSy0E_AxHPlJWO8f48pY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iRPNyLugSy0E_AxHPlJWO8f48pY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iRPNyLugSy0E_AxHPlJWO8f48pY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Il arrive parfois que certaines requêtes (bien que récurrentes) soient lentes. Or lors de tests, on s'aperçoit que :
- La requête est beaucoup plus rapide lors d'une seconde exécution (et après un vidage du cache des données uniquement mais pas après un vidage de cache de la shared pool)
- Le plan d'exécution met un certain temps à sortir
- Le plan d'exécution n'est pas stable (il diffère entre &lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/2IL6Fno9Djk" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2009/07/plans-dexecution-stockees.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIFQHYzeCp7ImA9WxNRFUw.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-4995464433149581830</id><published>2009-06-04T14:01:00.007+02:00</published><updated>2009-09-09T18:41:51.880+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-09T18:41:51.880+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PL_SQL" /><category scheme="http://www.blogger.com/atom/ns#" term="techniques" /><title>Aperçu des transactions autonomes</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/4995464433149581830?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/4995464433149581830?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/oLibcBYeFUI/apercu-des-transactions-autonomes.html" title="Aperçu des transactions autonomes" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pNPIfj2IvECAeFOUuOqJbgLCL-M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pNPIfj2IvECAeFOUuOqJbgLCL-M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pNPIfj2IvECAeFOUuOqJbgLCL-M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pNPIfj2IvECAeFOUuOqJbgLCL-M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Nous avons vu qu'une des règles fondamentales d'un SGBD est d'apporter une cohérence complète lors de transactions (atomicité de la transaction) ; cependant, il arrive que certaines transactions doivent être exécutées indépendamment de celle qui l'appelle. C'est ce qu'on nomme les transactions autonomes.

Oracle a mis en place un mécanisme permettant cette exception : la clause  PRAGMA &lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/oLibcBYeFUI" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2009/06/apercu-des-transactions-autonomes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcCRX85eCp7ImA9WxJXE0g.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-386218086848548098</id><published>2009-05-30T16:12:00.009+02:00</published><updated>2009-06-07T09:01:04.120+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-07T09:01:04.120+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="optimisation" /><category scheme="http://www.blogger.com/atom/ns#" term="PL_SQL" /><category scheme="http://www.blogger.com/atom/ns#" term="techniques" /><title>CBO : les plans d'exécution selon la volumétrie cible</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/386218086848548098?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/386218086848548098?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/4HUWTTDpoIA/cbo-les-plans-dexecution-selon-la.html" title="CBO : les plans d'exécution selon la volumétrie cible" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/D0JDWUgQokmHBOZrG1kV5O5M_w8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D0JDWUgQokmHBOZrG1kV5O5M_w8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/D0JDWUgQokmHBOZrG1kV5O5M_w8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D0JDWUgQokmHBOZrG1kV5O5M_w8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Lorsqu'une application est conçue, elle passe en général par plusieurs phases avant d'arriver dans l'environnement de production.Afin de connaître les différents plan d'exécution, nous pouvons exporter les statistiques de l'environnement de production pour valider les plans sur un environnement de validation (pré-production - outil exp / imp avec le paramêtre rows=n) ; cependant, il arrive qu'une&lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/4HUWTTDpoIA" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2009/05/cbo-les-plans-dexecution-selon-la.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UGRno5eCp7ImA9WxVaGE8.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-8815452155475461500</id><published>2009-04-15T11:46:00.001+02:00</published><updated>2009-04-15T20:47:07.420+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-15T20:47:07.420+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="script SQL" /><category scheme="http://www.blogger.com/atom/ns#" term="migration" /><category scheme="http://www.blogger.com/atom/ns#" term="techniques" /><title>Reprise de données : exemples simples</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/8815452155475461500?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/8815452155475461500?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/CaeYfRoe6jQ/reprise-de-donnees-exemples-simples.html" title="Reprise de données : exemples simples" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LMrrT5i_nISqYCm6eY_sUFhh99o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LMrrT5i_nISqYCm6eY_sUFhh99o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LMrrT5i_nISqYCm6eY_sUFhh99o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LMrrT5i_nISqYCm6eY_sUFhh99o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Très régulièrement, lors d'upgrade d'une application, la base doit subir quelques modifications. C'est notamment le cas lorsque celle-ci permet une extension d'un type de colonne vers un plus permissif : pour migrer les données d'un type NUMBER(5) à NUMBER(10) ou de VARCHAR2(50) vers VARCHAR2(250), aucun problème : un simple alter sur la table prend en compte les modifications.alter table t1 &lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/CaeYfRoe6jQ" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2009/04/reprise-de-donnees-exemples-simples.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQARXs4fCp7ImA9WxBaEUU.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-830911178769949599</id><published>2009-04-13T15:43:00.007+02:00</published><updated>2010-03-21T17:02:24.534+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-21T17:02:24.534+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jointure" /><category scheme="http://www.blogger.com/atom/ns#" term="index" /><category scheme="http://www.blogger.com/atom/ns#" term="fonction" /><title>Clés primaires et étrangères : mettre en place ses contraintes d'intégrité</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/830911178769949599?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/830911178769949599?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/ecE7kcIZlmI/cles-primaires-et-etrangeres-mettre-en.html" title="Clés primaires et étrangères : mettre en place ses contraintes d&amp;#39;intégrité" /><author><name>memento</name><uri>http://www.blogger.com/profile/17072005967359005812</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rwQwEmd-lcF8_PakRjBSUGzKFVw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rwQwEmd-lcF8_PakRjBSUGzKFVw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rwQwEmd-lcF8_PakRjBSUGzKFVw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rwQwEmd-lcF8_PakRjBSUGzKFVw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;L'intérêt des SGBD au-delà du stockage, est d'organiser ce stockage et permettre d'établir certaines règles sur celui-ci.
Ainsi, on définit généralement, pour chacune des tables, une clé primaire. Cette clé permettra d'identifier de manière unique le tuple dans la table (symboliser par une ligne lors de la représentation dans un tableau).
C'est pourquoi, lors de la déclaration d'une colonne (ou &lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/ecE7kcIZlmI" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2009/04/cles-primaires-et-etrangeres-mettre-en.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQGR38zcCp7ImA9WxBaFkw.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-1881830526758310140</id><published>2009-04-13T14:54:00.002+02:00</published><updated>2010-03-26T14:32:06.188+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-26T14:32:06.188+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="script SQL" /><category scheme="http://www.blogger.com/atom/ns#" term="jointure" /><category scheme="http://www.blogger.com/atom/ns#" term="techniques" /><title>L'instruction MERGE ou l'insertion choisie</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/1881830526758310140?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/1881830526758310140?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/KupGqM6EtzY/l-merge-ou-l-choisie.html" title="L&amp;#39;instruction MERGE ou l&amp;#39;insertion choisie" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oWKtW3OnuE4IEs0iAyFi2HDAK4A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oWKtW3OnuE4IEs0iAyFi2HDAK4A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oWKtW3OnuE4IEs0iAyFi2HDAK4A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oWKtW3OnuE4IEs0iAyFi2HDAK4A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Une problématique récurrente en base de données est l'insertion de données "aveugle", sans connaître la présence antérieure de la donnée (c'est à dire dont la contrainte unique existe, clé primaire ou non).
Depuis la 9i, l'instruction MERGE permet d'éviter de passer par un langage supérieur (PL par exemple) afin de, directement en SQL, faire la mise à jour si la donnée existait ou de l'insérer si&lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/KupGqM6EtzY" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2009/04/l-merge-ou-l-choisie.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQFSXs_eip7ImA9Wx9XGU4.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-3191684396385810397</id><published>2009-04-13T00:47:00.011+02:00</published><updated>2011-01-13T16:58:38.542+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-13T16:58:38.542+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jointure" /><category scheme="http://www.blogger.com/atom/ns#" term="paramétrage" /><title>DBlink : interroger une base distante</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/3191684396385810397?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/3191684396385810397?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/BBcpS1JkrOU/dblink-interroger-une-base-distante.html" title="DBlink : interroger une base distante" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/w0pdmuhwoB0z09xDdGnzGRRCU-A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w0pdmuhwoB0z09xDdGnzGRRCU-A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/w0pdmuhwoB0z09xDdGnzGRRCU-A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w0pdmuhwoB0z09xDdGnzGRRCU-A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Un DBlink est un objet Oracle permettant de créer un lien entre plusieurs base de données Oracle, ce lien peut être sur le même hôte, sur un hôte appartenant au domaine ou sur tout autre hôte joignable par le protocole TCP/IP.

Pour créer un DBLink, il faut que le tnsname.ora soit correctement renseigné concernant le SID de la base distante :

CREATE PUBLIC DATABASE LINK bdddist
CONNECT TO SCOTT &lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/BBcpS1JkrOU" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2009/04/dblink-interroger-une-base-distante.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUGQHc8eip7ImA9WxBaEUU.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-4479871984006050045</id><published>2009-04-12T19:40:00.007+02:00</published><updated>2010-03-21T15:53:41.972+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-21T15:53:41.972+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="optimisation" /><category scheme="http://www.blogger.com/atom/ns#" term="index" /><category scheme="http://www.blogger.com/atom/ns#" term="paramétrage" /><title>Pourquoi mon index n'est pas utilisé ?</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/4479871984006050045?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/4479871984006050045?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/TRJJnLEGNyk/pourquoi-mon-index-n-pas-utilise.html" title="Pourquoi mon index n&amp;#39;est pas utilisé ?" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GAupfYFTGMeY2uY1-GSJSB9EWGk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GAupfYFTGMeY2uY1-GSJSB9EWGk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GAupfYFTGMeY2uY1-GSJSB9EWGk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GAupfYFTGMeY2uY1-GSJSB9EWGk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Lors de l'analyse de la lenteur de certains traitements, une question revient souvent : pourquoi mon index n'est-il pas utilisé ?

A celle-ci, plusieurs réponses sont possibles. Aussi, détaillons les différents cas :

- index invalide
Vous pouvez le vérifier simplement par la requête :

select index_name, status from user_indexes where index_name='IX1';

L'erreur ORA-01502 est un symptôme très &lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/TRJJnLEGNyk" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2009/04/pourquoi-mon-index-n-pas-utilise.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMHRnsyeyp7ImA9WxJSF0w.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-2030405021727758506</id><published>2009-04-12T14:31:00.003+02:00</published><updated>2009-05-07T18:23:57.593+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-07T18:23:57.593+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jointure" /><category scheme="http://www.blogger.com/atom/ns#" term="optimisation" /><category scheme="http://www.blogger.com/atom/ns#" term="index" /><title>Les index bitmap</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/2030405021727758506?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/2030405021727758506?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/t5tEIvBe9kQ/les-index-bitmap.html" title="Les index bitmap" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zYLv4WhGxVXlk1ar6RdAdSv4o4k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zYLv4WhGxVXlk1ar6RdAdSv4o4k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zYLv4WhGxVXlk1ar6RdAdSv4o4k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zYLv4WhGxVXlk1ar6RdAdSv4o4k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Les index bitmap permettent une recherche très aisée et rapide dans certains cas ; voici leur fonctionnement :Un mot binaire est créé comportant autant de bits que de possibilité de valeurs de l'index. Ainsi, lors d'une recherche, un simple 'ET binaire' permet valider la correspondance de la valeur.Il est donc compréhensible que ce type d'index soit le plus efficace sur un nombre de valeur réduit&lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/t5tEIvBe9kQ" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2009/04/les-index-bitmap.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQHSXw8eyp7ImA9WxBbFkg.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-1710866149985414859</id><published>2009-04-10T22:24:00.005+02:00</published><updated>2010-03-15T12:58:58.273+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-15T12:58:58.273+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sqlplus" /><category scheme="http://www.blogger.com/atom/ns#" term="PL_SQL" /><title>Les bind variables pour les requêtes courantes</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/1710866149985414859?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/1710866149985414859?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/niwlnn1XWE0/les-bind-variables-pour-les-requetes.html" title="Les bind variables pour les requêtes courantes" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/x9u_80-ggmczDnxxogivJA67MiE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/x9u_80-ggmczDnxxogivJA67MiE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/x9u_80-ggmczDnxxogivJA67MiE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/x9u_80-ggmczDnxxogivJA67MiE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Une application destinée à un grand nombre d'utilisateurs est généralement composée de requêtes identiques à un critère prêt.

Soit la requête de l'application permettant de générer la facture pour une commande donnée (CMD1) :

select cm.ref, cl.nom, cl.adresse, a.description, a.prix, l.quantite, sum(l.prix*l.quantite)
from commande cmd
inner join client cl on cl.idclient = cm.idclient
inner join&lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/niwlnn1XWE0" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2009/04/les-bind-variables-pour-les-requetes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcAQHw4eip7ImA9Wx9WEks.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-3333678911453459079</id><published>2009-04-10T19:08:00.006+02:00</published><updated>2011-01-17T13:40:41.232+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-17T13:40:41.232+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sqlplus" /><category scheme="http://www.blogger.com/atom/ns#" term="script SQL" /><category scheme="http://www.blogger.com/atom/ns#" term="index" /><category scheme="http://www.blogger.com/atom/ns#" term="PL_SQL" /><category scheme="http://www.blogger.com/atom/ns#" term="techniques" /><title>Injection et traitements de masse</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/3333678911453459079?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/3333678911453459079?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/6_F6HwGxuNA/injection-et-traitements-de-masse.html" title="Injection et traitements de masse" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vXOY8hDSgYwBj-T4qvkGdcwkjQA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vXOY8hDSgYwBj-T4qvkGdcwkjQA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vXOY8hDSgYwBj-T4qvkGdcwkjQA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vXOY8hDSgYwBj-T4qvkGdcwkjQA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Voici quelques astuces pour tous ce qui attrait aux traitements de masse ou à l'injection de données de forte volumétrie :

Suppressions en masseSupprimer un grand nombre de lignes sans vouloir toucher au tablespace UNDO :

procédure PL :
DECLARE

compteur NUMBER := 0;
total NUMBER := 0;

CURSOR cur_donnees_sup IS
SELECT rowid
FROM tas
WHERE flag = 'Y'

BEGIN
FOR rec IN cur_donnees_sup LOOP
&lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/6_F6HwGxuNA" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2009/04/injection-et-traitements-de-masse.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMFRXw8fCp7ImA9WxBXF0o.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-2796034133005098566</id><published>2009-04-10T17:37:00.002+02:00</published><updated>2010-01-29T14:56:54.274+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-29T14:56:54.274+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="index" /><category scheme="http://www.blogger.com/atom/ns#" term="fonction" /><title>Créer un index de fonction</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/2796034133005098566?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/2796034133005098566?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/teB661CED9g/creer-un-index-de-fonction.html" title="Créer un index de fonction" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/u_3aSel3TvD_ilEtEQgCel4fhH4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u_3aSel3TvD_ilEtEQgCel4fhH4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/u_3aSel3TvD_ilEtEQgCel4fhH4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u_3aSel3TvD_ilEtEQgCel4fhH4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;A partir de la table personne (num_secu char(13),
nom varchar2(250),
prenom varchar2(250),
sexe char(1)),
notre traitement à optimiser est la vérification de la clé de sécurité sociale saisie, le choix a été fait de ne pas stocker cette clé, mais de la calculer, par contre la création d'un index sur ce calcul va permettre de garder une persistence de celle-ci.

Voici, en premier lieu, la fonction&lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/teB661CED9g" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2009/04/creer-un-index-de-fonction.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMGR3o-cSp7ImA9WxJTEks.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-8087423480401471171</id><published>2009-04-09T18:07:00.002+02:00</published><updated>2009-04-20T23:20:26.459+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-20T23:20:26.459+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="migration" /><category scheme="http://www.blogger.com/atom/ns#" term="PL_SQL" /><category scheme="http://www.blogger.com/atom/ns#" term="maintenance" /><title>Vidage de cache</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/8087423480401471171?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/8087423480401471171?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/jSaMk8R6pj4/vidage-de-cache.html" title="Vidage de cache" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vJumc4fKMU8UDxDWvonDckbdtvU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vJumc4fKMU8UDxDWvonDckbdtvU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vJumc4fKMU8UDxDWvonDckbdtvU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vJumc4fKMU8UDxDWvonDckbdtvU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Lors de test de performance sur une injection d'un gros volume de données, on a souvent besoin d'estimer le temps de traitement ; cependant le jeu de données ne correspond pas à la réalité, il faut alors boucler sur ce jeu.Or, oracle met en cache (au sein de la sga) un certain nombre de données afin d'y accéder plus rapidement. Il faut alors vider ce cache entre chaque itération.Deux commandes &lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/jSaMk8R6pj4" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2009/04/vidage-de-cache.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEBSX0yeip7ImA9WhRXFko.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-6096228315493560868</id><published>2009-04-09T00:30:00.011+02:00</published><updated>2011-12-23T21:04:18.392+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-23T21:04:18.392+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jointure" /><category scheme="http://www.blogger.com/atom/ns#" term="optimisation" /><category scheme="http://www.blogger.com/atom/ns#" term="index" /><title>Utilisation de rownum et rowid</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/6096228315493560868?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/6096228315493560868?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/6g4owi5T2So/utilisation-de-rownum-et-rowid.html" title="Utilisation de rownum et rowid" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eGJiFFuRwIMGm34qs7Wb_5EwOK4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eGJiFFuRwIMGm34qs7Wb_5EwOK4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eGJiFFuRwIMGm34qs7Wb_5EwOK4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eGJiFFuRwIMGm34qs7Wb_5EwOK4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
rowid
Les données sont stockées dans des tables, mais le fonctionnement interne d'oracle utilise un identifiant unique par tuple, quelque soit la table : le rowid.
C'est ainsi que lors de jointures, on aperçoit parfois dans l'explain plan (plan d'exécution) access by rowid, celà signifie qu'Oracle a reperé le rowid d'un tuple à partir d'un index par exemple, et qu'il accède au tuple entier dans &lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/6g4owi5T2So" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2009/04/utilisation-de-rownum-et-rowid.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8MQnc-fyp7ImA9WxNRFkg.&quot;"><id>tag:blogger.com,1999:blog-5380340563983735835.post-3894296661592637930</id><published>2009-04-08T22:56:00.005+02:00</published><updated>2009-09-11T10:14:43.957+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-11T10:14:43.957+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="script SQL" /><category scheme="http://www.blogger.com/atom/ns#" term="PL_SQL" /><category scheme="http://www.blogger.com/atom/ns#" term="techniques" /><title>Les exceptions SQL oracle</title><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/3894296661592637930?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5380340563983735835/posts/default/3894296661592637930?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/aide-oracle/WBya/~3/zfVJrWImxvc/les-exceptions-sql-oracle.html" title="Les exceptions SQL oracle" /><author><name>Manu</name><uri>http://www.blogger.com/profile/12401066791524746304</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://manupavy.free.fr/cimg0317.jpg" /></author><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OD737BCcGpB1mzoOLJd7PrZGgiw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OD737BCcGpB1mzoOLJd7PrZGgiw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OD737BCcGpB1mzoOLJd7PrZGgiw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OD737BCcGpB1mzoOLJd7PrZGgiw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;A l'instar de Java, Oracle lève des exceptions en cas d'incompatibilité entre la requête demandée et son résultat, par exemple :
TOO_MANY_ROWS ; NO_DATA_FOUND ; ...

Ces exceptions sont très souvent utilisées afin d'exécuter un traitement spécifique au cas rencontré ; le cas le plus courant étant la sortie de boucle lorsque l'exception NO_DATA_FOUND est levée.

decare
cardinaliteLigne varchar2(&lt;img src="http://feeds.feedburner.com/~r/aide-oracle/WBya/~4/zfVJrWImxvc" height="1" width="1"/&gt;</content><feedburner:origLink>http://www.aide-oracle.net/2009/04/les-exceptions-sql-oracle.html</feedburner:origLink></entry></feed>

