
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Waanser &#187; PL/SQL</title>
	<atom:link href="http://www.waanser.com/category/pl-sql/feed" rel="self" type="application/rss+xml" />
	<link>http://www.waanser.com</link>
	<description>Un blog utilisant WordPress</description>
	<lastBuildDate>Wed, 07 Jul 2010 21:54:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Les packages PL/SQL</title>
		<link>http://www.waanser.com/pl-sql/606-les-packages-plsql.html</link>
		<comments>http://www.waanser.com/pl-sql/606-les-packages-plsql.html#comments</comments>
		<pubDate>Fri, 23 Jan 2009 14:56:59 +0000</pubDate>
		<dc:creator>roul</dc:creator>
				<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[package;]]></category>

		<guid isPermaLink="false">http://www.waanser.com/?p=606</guid>
		<description><![CDATA[Les packages PL/SQL apportent pas mal d&#8217;avantages par rapport aux procédures et fonctions stockées. Nous allons voir dans ce tutoriel comment exploité au mieux ces packages. Les avantages des packages PL/SQL Les avantages des packages PL/SQL sont : Gain de performance : Le moteur PL/SQL charge le package entier en mémoire dès que l&#8217;on fait [...]]]></description>
			<content:encoded><![CDATA[<p>Les packages PL/SQL apportent pas mal d&#8217;avantages par rapport aux procédures et fonctions stockées. Nous allons voir dans ce tutoriel comment exploité au mieux ces packages.<br />
<span id="more-606"></span></p>
<h2>Les avantages des packages PL/SQL</h2>
<p>Les avantages des packages PL/SQL sont :</p>
<p><strong>Gain de performance :</strong></p>
<ol>
Le moteur PL/SQL charge  le package entier en mémoire  dès que l&#8217;on fait appel à une de ses procédures. L&#8217;exécution des autres procédures se fera directement, sans lecture préalable du moteur PL/SQL.</ol>
<p><strong>Gestion de sécurité :</strong></p>
<ol>
 En effet en enregistrant les procédures à travers un package, on peut définir des droits d&#8217;accès publique ou privée.</ol>
<p><strong>Un structuration plus cohérente :</strong></p>
<ol>
 Les objets peuvent être reliés entre eux par le biais d&#8217;utilisation de variable Globale. Le relecture et la compréhension des fonctionnalités des procédures du package se fait plus facilement.
</ol>
<h2>Composition des packages PL/SQL</h2>
<p>Les packages PL/SQL se divisent en 2 parties :</p>
<p><strong>la spécification </strong>: Partie déclarative du package qui liste les entêtes de procédures et fonctions (contenues dans le package PL/SQL).</p>
<p><strong>le corps du package</strong> : possède le code PL/SQL des procédures et fonctions définies dans la spécification.</p>
<h2>Syntaxe</h2>
<p><strong>CREATE </strong><em>[OR REPLACE]</em> <strong>PACKAGE BODY</strong> <em>nompackage</em><br />
{ IS | AS }<br />
Déclarations de variables locales<br />
Corps des sous-programmes publics et privés<br />
<strong>BEGIN</strong><br />
&#8230;<br />
<strong>END</strong> <em>[nompackage]</em> ;</p>
<h2>Exemple en code</h2>
<pre class="brush: sql">
-- 1) Installation d&#039;un package
CREATE or replace PACKAGE pacRH
AS
-- =====================
/*
 Fonction de conversion en FF (arrondir aux centimes) d&#039;un montant transmis en EURO.
*/
 FUNCTION ConvFF (pMontant NUMBER) RETURN NUMBER ;

END pacRH ;

-- 2) Implémentation du corps de package
CREATE or replace PACKAGE BODY pacRH
AS

-- =====================
FUNCTION ConvFF (pMontant NUMBER)
RETURN NUMBER
IS
 vTaux  CONSTANT NUMBER := 6.55957 ;
BEGIN
 RETURN ( ROUND( pMontant * vTaux, 2) ) ;
EXCEPTION
 WHEN others THEN RETURN (null) ;
END ConvFF ;

END pacRH ;

-- =======================================
-- Test
select * from salarie
where pacRH.ConvFF(sal) &gt; 12000 ;

-- =======================================
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.waanser.com/pl-sql/606-les-packages-plsql.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BOUCLE FOR &#8230; IN &#8230; LOOP</title>
		<link>http://www.waanser.com/pl-sql/534-boucle-for-in-loop.html</link>
		<comments>http://www.waanser.com/pl-sql/534-boucle-for-in-loop.html#comments</comments>
		<pubDate>Wed, 21 Jan 2009 11:14:04 +0000</pubDate>
		<dc:creator>roul</dc:creator>
				<category><![CDATA[PL/SQL]]></category>

		<guid isPermaLink="false">http://www.waanser.com/?p=534</guid>
		<description><![CDATA[Pour plus de facilité le PL/SQL nous propose une gestion simplifiée de curseur en utilisant la boucle FOR. Traitement du curseur par une boucle FOR : BEGIN FOR indice IN requete sql LOOP /* traitement */ END LOOP; END; En PL/SQL cela donne : CREATE OR REPLACE PROCEDURE BOUCLE_FOR AS BEGIN FOR vSegment IN (select [...]]]></description>
			<content:encoded><![CDATA[<p>Pour plus de facilité le PL/SQL nous propose une gestion simplifiée de curseur<br />
en utilisant la boucle FOR.<br />
<span id="more-534"></span></p>
<p>Traitement du curseur par une boucle FOR :</p>
<p>BEGIN<br />
<strong>FOR </strong><em>indice </em><strong>IN </strong><em>requete sql </em> <strong>LOOP</strong><br />
/* traitement */<br />
<strong>END LOOP;</strong><br />
END;</p>
<p>En PL/SQL cela donne :</p>
<pre class="brush: sql">
CREATE OR REPLACE
PROCEDURE BOUCLE_FOR AS
BEGIN
FOR vSegment IN (select  TABLE_NAME  from USER_TABLES)
LOOP
 DBMS_OUTPUT.PUT_LINE(vSegment.TABLE_NAME);
END LOOP;
END BOUCLE_FOR;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.waanser.com/pl-sql/534-boucle-for-in-loop.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Les exceptions en PL/SQL</title>
		<link>http://www.waanser.com/pl-sql/163-les-exceptions-en-plsql.html</link>
		<comments>http://www.waanser.com/pl-sql/163-les-exceptions-en-plsql.html#comments</comments>
		<pubDate>Tue, 30 Dec 2008 17:25:02 +0000</pubDate>
		<dc:creator>roul</dc:creator>
				<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[gestion d'erreur]]></category>

		<guid isPermaLink="false">http://www.waanser.com/?p=163</guid>
		<description><![CDATA[Le PL/SQL offre un moyen d&#8217;identifier et de traiter les éventuelles erreurs à l&#8217;aide du mécanisme des exceptions. Nous nous allons voir comment définir, déclencher et traiter les exceptions en PL/SQL. Le bloc PL/SQL possède comme structure type, celle-ci : [DECLARE] déclarations et initialisation BEGIN instructions exécutables [EXCEPTION] interception des erreurs END; Dans un premier [...]]]></description>
			<content:encoded><![CDATA[<p>Le PL/SQL offre un moyen d&#8217;identifier et de traiter les éventuelles erreurs à l&#8217;aide du mécanisme des exceptions. </p>
<p>Nous nous allons voir comment définir, déclencher et traiter les exceptions en PL/SQL. <span id="more-163"></span></p>
<p>Le bloc PL/SQL possède comme structure type, celle-ci :</p>
<p>[DECLARE]<br />
déclarations et initialisation<br />
BEGIN<br />
instructions exécutables<br />
[EXCEPTION]<br />
interception des erreurs<br />
END;</p>
<p>Dans un premier temps nous allons créer un bloc PL/SQL avec une erreur sans la gestion exception.<br />
Puis allons capturer l&#8217;erreur avec un la gestion d&#8217;exception.</p>
<pre class="brush: sql">
DECLARE
sName USERS.NAME%TYPE;
BEGIN
  BEGIN
    SELECT NAME INTO sName FROM USERS WHERE 0 = 1;
    DBMS_OUTPUT.PUT_LINE( sName ) ;
  END;
  DBMS_OUTPUT.PUT_LINE( &#039;Le script continue.&#039; ) ;
END;
/
</pre>
<p>eh la ! Oracle nous envoi une belle erreur !</p>
<p>On voit que le script s&#8217;est arrête dès l&#8217;apparition de l&#8217;erreur.</p>
<div id="attachment_175" class="wp-caption alignnone" style="width: 406px"><img src="http://media.waanser.com/2008/12/error.png" alt="error 01403 pl sql" title="error 01403 pl sql" width="396" height="224" class="size-full wp-image-175" /><p class="wp-caption-text">error 01403 pl sql</p></div>
<p>On va capturer l&#8217;erreur en déclarant une exception.</p>
<p>Voici ce que cella va donnée :</p>
<pre class="brush: sql">
DECLARE
sName USERS.NAME%TYPE;
BEGIN
  BEGIN
    SELECT NAME INTO sName FROM USERS WHERE 0 = 1;
    DBMS_OUTPUT.PUT_LINE( sName ) ;
  EXCEPTION
  WHEN NO_DATA_FOUND then
      DBMS_OUTPUT.PUT_LINE( &#039;Il n&#039;&#039;y a aucun utilisateur.&#039; ) ;
  END;
  DBMS_OUTPUT.PUT_LINE( &#039;Le script continue.&#039; ) ;
END;
/
</pre>
<p>note à part : pour mettre  échapper un caractère en PL/SQL, il faut simplement le doubler . ex :<br />
(&#8216; => &nbsp;&raquo;)<br />
(&nbsp;&raquo; =>&nbsp;&raquo;")<br />
( =>\)</p>
<p>Après exécution du bloc, on voit que l&#8217;erreur n&#8217;apparait pas (elle est capturée) et que le script continu à tourner <img src='http://www.waanser.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div id="attachment_178" class="wp-caption alignnone" style="width: 472px"><img src="http://media.waanser.com/2008/12/exception-data-not-found.png" alt="exception-data-not-found" title="exception-data-not-found" width="462" height="124" class="size-full wp-image-178" /><p class="wp-caption-text">exception-data-not-found</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.waanser.com/pl-sql/163-les-exceptions-en-plsql.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SELECT INTO</title>
		<link>http://www.waanser.com/pl-sql/165-select-into.html</link>
		<comments>http://www.waanser.com/pl-sql/165-select-into.html#comments</comments>
		<pubDate>Tue, 30 Dec 2008 14:34:15 +0000</pubDate>
		<dc:creator>roul</dc:creator>
				<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[SELECT INTO]]></category>

		<guid isPermaLink="false">http://www.waanser.com/?p=165</guid>
		<description><![CDATA[En plus d&#8217;utiliser &#171;&#160;:=&#160;&#187;, en PL/SQL on peu affecter une valeur à une variable en utilisant le SELECT INTO. La syntaxe est très simple : SELECT attribut INTO variable FROM entité WHERE condition; Donc nous allons utiliser la commande SELECT INTO pour affecter le nombre d&#8217;utilisateur à une variable. DECLARE iNbUser INTEGER; BEGIN SELECT COUNT(*) [...]]]></description>
			<content:encoded><![CDATA[<p>En plus d&#8217;utiliser &laquo;&nbsp;:=&nbsp;&raquo;, en PL/SQL on peu affecter une valeur à une variable en utilisant le SELECT INTO.<span id="more-165"></span></p>
<p>La syntaxe est très simple :<br />
SELECT attribut INTO variable<br />
FROM entité<br />
WHERE condition;</p>
<p>Donc nous allons  utiliser la commande SELECT INTO pour affecter le nombre d&#8217;utilisateur à une variable.</p>
<pre class="brush: sql">
DECLARE
iNbUser INTEGER;
BEGIN
SELECT COUNT(*) INTO iNbUser FROM USERS;
   DBMS_OUTPUT.PUT_LINE( iNbUser ) ;
END;
/
</pre>
<p>Attention, il faut s&#8217;assurer que le SELECT INTO renvoi bien qu&#8217;un seul enregistrement ! Sinon le PL/SQL va générer une erreur.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.waanser.com/pl-sql/165-select-into.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>les curseurs en pl/sql</title>
		<link>http://www.waanser.com/pl-sql/110-les-curseurs-en-plsql.html</link>
		<comments>http://www.waanser.com/pl-sql/110-les-curseurs-en-plsql.html#comments</comments>
		<pubDate>Mon, 29 Dec 2008 16:46:08 +0000</pubDate>
		<dc:creator>roul</dc:creator>
				<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[curseurs]]></category>

		<guid isPermaLink="false">http://www.waanser.com/?p=110</guid>
		<description><![CDATA[Un des plus grandes forces du langage pl/sql, c&#8217;est bien les curseurs. En effet il permet de récupérer et de traiter le données de la base d&#8217;oracle ligne par ligne. Les types de curseurs · Le curseur explicite Le curseur explicite est géré pas l&#8217;utilisateur (sur un SELECT). · Le curseur implicite Le curseur implicite [...]]]></description>
			<content:encoded><![CDATA[<p>Un des plus grandes forces du langage pl/sql, c&#8217;est bien les curseurs. En effet il permet de récupérer et de traiter le données de la base d&#8217;oracle ligne par ligne.<br />
<span id="more-110"></span></p>
<h2>Les types de curseurs</h2>
<p><strong>·      Le curseur explicite</strong><br />
 Le curseur explicite est géré pas l&#8217;utilisateur (sur un SELECT).</p>
<p><strong>·      Le curseur implicite</strong><br />
Le curseur implicite est généré et géré par le noyau.</p>
<h2>l&#8217;utilisation du curseur pl/sql</h2>
<p>On peut diviser le vie d&#8217;un curseur en 4 parties</p>
<ul>
<li>déclaration (DECLARE)</li>
<li>ouverture (OPEN)</li>
<li>utilisation (FETCH)</li>
<li>fermeture (CLOSE)</li>
</ul>
<h2>Déclaration d&#8217;un curseur</h2>
<p>CURSOR nom_curseur IS ordre_select</p>
<p>Exemple:</p>
<pre class="brush: sql">
DECLARE
CURSOR cUtilisateur IS SELECT NOM, PRENOM FROM UTILISATEUR;
</pre>
<h2>Ouverture d&#8217;un curseur</h2>
<p>OPEN nom_curseur</p>
<p>L&#8217;ouverture du curseur engendre l&#8217;exécution de la requête.<br />
Il faut savoir aussi que le curseur se place automatiquement à la première ligne du tableau.</p>
<div id="attachment_126" class="wp-caption alignnone" style="width: 279px"><img src="http://media.waanser.com/2008/12/exemple-curseur.png" alt="exemple-curseur-pl-sql" title="exemple-curseur-pl-sql" width="269" height="207" class="size-full wp-image-126" /><p class="wp-caption-text">exemple-curseur-pl-sql</p></div>
<p>Dans cet illustration on voit que le curseur est positionné dans le premier enregistrement qui est &laquo;&nbsp;dupond jean&nbsp;&raquo;.</p>
<p>Voici comment on ouvre un curseur en pl/sql :</p>
<pre class="brush: sql">
DECLARE
CURSOR cUtilisateur IS SELECT NOM, PRENOM FROM UTILISATEUR;
BEGIN
OPEN cUtilisateur;
...
CLOSE cUtilisateur;
END;
/
</pre>
<h2> Fetch </h2>
<p>La commande Fetch permet de lire la ligne en cours (la ligne ou est positionné le curseur).<br />
Après la lecture de la ligne, il positionne automatiquement le curseur à la ligne suivante.<br />
Attention, si le curseur est en fin de tableau, la commande Fetch ne quitte pas automatiquement le tableau,<br />
il reste &laquo;&nbsp;bloqué&nbsp;&raquo; sur le dernier enregistrement.</p>
<p>Voici la syntaxe :</p>
<p>Pour parcourir un tableau il faut ainsi utiliser une boucle sur la commande fetch<br />
 FETCH nom_curseur INTO ligne_tableau;</p>
<p>ligne_tableau doit être une variable dynamique à partir du curseur:<br />
voici la syntaxe :</p>
<p>ligne_tableau nom_curseur%ROWTYPE; </p>
<pre class="brush: sql">
DECLARE
CURSOR cUtilisateur IS SELECT NOM, PRENOM FROM UTILISATEUR;
  lUtilisateur cUtilisateur%ROWTYPE;
BEGIN
OPEN cUtilisateur;
  LOOP
  FETCH cUtilisateur INTO lUtilisateur;
  EXIT WHEN cUtilisateur%NOTFOUND;
   DBMS_OUTPUT.PUT_LINE( lUtilisateur.NAME ) ;
  END LOOP;
CLOSE cUtilisateur;
END;
/
</pre>
<h2>Attributs</h2>
<p>On peux vérifier l&#8217;état d&#8217;un curseur grasse à ces attributs :</p>
<p><strong>%FOUND</strong><br />
vérifie si le fetch renvoi bien une ligne<br />
<strong>%NOTFOUND</strong><br />
vérifie si le fetch ne renvoi aucune une ligne<br />
<strong>%ROWCOUNT</strong><br />
compte le nombre de ligne que le curseur à lu<br />
<strong>%ISOPEN</strong><br />
vérifie si le curseur est ouvert</p>
]]></content:encoded>
			<wfw:commentRss>http://www.waanser.com/pl-sql/110-les-curseurs-en-plsql.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Les boucles en PL/SQL</title>
		<link>http://www.waanser.com/pl-sql/94-les-boucles-en-plsql.html</link>
		<comments>http://www.waanser.com/pl-sql/94-les-boucles-en-plsql.html#comments</comments>
		<pubDate>Tue, 23 Dec 2008 10:50:59 +0000</pubDate>
		<dc:creator>roul</dc:creator>
				<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[boucles]]></category>

		<guid isPermaLink="false">http://www.waanser.com/?p=94</guid>
		<description><![CDATA[Les boucles en PL/SQL sont utilisés principalement pour parcourir un tableau d&#8217;enregistrement. Nous allons voir comment utiliser et manipuler les boucles pl/sql simplement. Boucle WHILE en PL/SQL La boucle WHILE répète une séquence d&#8217;instructions tant que la condition est respectée. A chaque itération la condition est vérifiée. WHILE condition LOOP commandes END LOOP; DECLARE iCompteur [...]]]></description>
			<content:encoded><![CDATA[<p>Les boucles en PL/SQL sont utilisés principalement pour parcourir un tableau d&#8217;enregistrement.<br />
Nous allons voir comment utiliser et manipuler les boucles pl/sql simplement.<br />
<span id="more-94"></span></p>
<h2>Boucle WHILE en PL/SQL</h2>
<p>La boucle WHILE répète une séquence d&#8217;instructions tant que la condition est respectée.<br />
A chaque itération la condition est vérifiée.</p>
<p>WHILE condition<br />
LOOP<br />
 commandes<br />
END LOOP;</p>
<pre class="brush: sql">
  DECLARE
  iCompteur INTEGER := 0 ;
  BEGIN
	WHILE iCompteur &lt; 3
	LOOP
		iCompteur := iCompteur + 1;
		DBMS_OUTPUT.PUT_LINE( iCompteur ) ;
	END LOOP;
 END ;
 /
</pre>
<h2>Boucle FOR en PL/SQL</h2>
<p>La structure de contrôle for est sans doute l&#8217;une des plus importantes. Elle permet de réaliser toutes sortes de boucles et, en particulier, les boucles itérant sur les valeurs d&#8217;une variable de contrôle. Sa syntaxe est la suivante : </p>
<p>FOR indice IN [REVERSE] borne_début..borne_fin<br />
LOOP<br />
   commandes;<br />
END LOOP;</p>
<pre class="brush: sql">
BEGIN
FOR iCompteur IN  1..3
LOOP
    DBMS_OUTPUT.PUT_LINE( iCompteur ) ;
END LOOP;
END ;
/
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.waanser.com/pl-sql/94-les-boucles-en-plsql.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oracle  PL/SQL type de variable</title>
		<link>http://www.waanser.com/pl-sql/58-oracle-plsql-type-de-variable.html</link>
		<comments>http://www.waanser.com/pl-sql/58-oracle-plsql-type-de-variable.html#comments</comments>
		<pubDate>Mon, 22 Dec 2008 16:42:45 +0000</pubDate>
		<dc:creator>roul</dc:creator>
				<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[variable]]></category>

		<guid isPermaLink="false">http://www.waanser.com/?p=58</guid>
		<description><![CDATA[Le PL/SQL propose un toute une variété de type de variable. Ceci a pour but d&#8217;avoir une cohérence parfaite entre les variables des blocs PL/SQL et les données des différentes tables. On peut structurer les types de variables en deux parties ; les scalaires et les composés. Chaque structure est composée de sous catégories, en [...]]]></description>
			<content:encoded><![CDATA[<p>Le PL/SQL propose un toute une variété de type de variable. Ceci a pour but d&#8217;avoir une cohérence parfaite entre les variables des blocs PL/SQL et les données des différentes tables.<br />
<span id="more-58"></span><br />
On peut structurer les types de variables en deux parties ; les <strong>scalaires </strong>et les <strong>composés</strong>. </p>
<p> Chaque structure est composée de sous catégories, en voici l&#8217;architecture :</p>
<ul>
<li>Les types scalaires</li>
<ul>
<li>booléen</li>
<li>numérique</li>
<li>caractère</li>
<li>date</li>
<li>rowid</li>
<li>grand objet</li>
</ul>
<li>Les types composés</li>
<ul>
<li>enregistrement</li>
<li>tableau</li>
</ul>
</ul>
<p>Voici la liste complète de tous les types classé hiérarchiquement :</p>
<div id="attachment_63" class="wp-caption alignnone" style="width: 310px"><br />
<a href="http://media.waanser.com/2008/12/varaible-oracle.png"><img src="http://media.waanser.com/2008/12/varaible-oracle.png" alt="oracle pl/sql variable" title="oracle pl/sql variable" width="300" height="213" class="size-medium wp-image-63" /></a><p class="wp-caption-text">oracle pl/sql variable</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.waanser.com/pl-sql/58-oracle-plsql-type-de-variable.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initiation en PL/SQL</title>
		<link>http://www.waanser.com/pl-sql/38-initiation-en-plsql.html</link>
		<comments>http://www.waanser.com/pl-sql/38-initiation-en-plsql.html#comments</comments>
		<pubDate>Thu, 18 Dec 2008 18:23:48 +0000</pubDate>
		<dc:creator>roul</dc:creator>
				<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[initiation]]></category>

		<guid isPermaLink="false">http://www.waanser.com/?p=38</guid>
		<description><![CDATA[Dans cet article nous allons afficher notre premier message en utilisant le PL/SQL. Structure du bloc PL/SQL Le bloc PL/SQL possède comme structure type, celle-ci : [DECLARE] déclarations et initialisation BEGIN instructions exécutables [EXCEPTION] interception des erreurs END; En enlevant les sections facultatives, un bloc PL/SQL peut ressembler à ça : BEGIN Null; END; La [...]]]></description>
			<content:encoded><![CDATA[<p>Dans cet article nous allons afficher notre premier message en utilisant le PL/SQL.<br />
<span id="more-38"></span></p>
<h2>Structure du bloc PL/SQL</h2>
<p>Le bloc PL/SQL possède comme structure type, celle-ci :</p>
<p>[DECLARE]<br />
   déclarations et initialisation<br />
BEGIN<br />
  instructions exécutables<br />
[EXCEPTION]<br />
  interception des erreurs<br />
END;</p>
<p>En enlevant les sections facultatives, un bloc PL/SQL peut ressembler à ça :</p>
<pre class="brush: sql">
BEGIN
   Null;
END;
</pre>
<p>La section BEGIN contient les instructions du programme. Elle est obligatoire et doit se terminer par le mot clé END.<br />
L&#8217;instruction Null; ne génère aucun code.</p>
<h2>Afficher un Message en PL/SQL</h2>
<p>Nous allons afficher une message. Pour ce ci nous allons utiliser la commande DBMS_OUTPUT.<br />
Voici comment on l&#8217;utilise :</p>
<pre class="brush: sql">
BEGIN
   DBMS_OUTPUT.PUT_LINE( &#039;Salut tilkc&#039;);
END;
   /
</pre>
<p>Attention, si rien ne s&#8217;affiche dans la console de sortit de script, c&#8217;est que vous n&#8217;avez pas<br />
activer le DBMS OUTPUT. Pour faire ceci, rien de plus simple, allez dans l&#8217;onglet DBMS OUTPUT, puis cliquer sur l&#8217;icône en haut à gauche comme ci dessous :</p>
<div id="attachment_39" class="wp-caption alignnone" style="width: 535px"><img src="http://media.waanser.com/2008/12/ex_oracle.png" alt="oracle DBMS_OUTPUT PUT_LINE " title="oracle DBMS_OUTPUT PUT_LINE " width="525" height="99" class="size-full wp-image-39" /><p class="wp-caption-text">oracle DBMS_OUTPUT PUT_LINE </p></div>
<h2>Utilisation de variable en PL/SQL</h2>
<p>Nous allons voir comment utiliser une variable. </p>
<p>Il faut utiliser la section déclarative avec l&#8217;utilisation du mot clé DECLARE.<br />
On va pouvoir déclarer et initier toutes les variables utiles pour l&#8217;exécution du BLOC PL/SQL.<br />
Voici la commande pour déclarer une variable du type chaine, et initier une valeur à celle-ci.</p>
<p> sMessage 	  VARCHAR2(15) := &#8216;Salut tilkc&#8217; ;</p>
<p>sMessage est déclarée de type VARCHAR2(15)</p>
<p>ce qui donne :</p>
<pre class="brush: sql">
DECLARE
   LC$Chaine	  VARCHAR2(15) := &#039;Salut Tilkc&#039; ;
BEGIN
   DBMS_OUTPUT.PUT_LINE( LC$Chaine ) ;
END ;
 /
</pre>
<p>comme vous le voyez, pour affecter une valeur à une variable, il faut utiliser l&#8217;opérateur :=</p>
<p>Pour connaitre les différents types de variable que propose oracle cliquez <a href="http://www.waanser.com/oracle/58-oracle-plsql-type-de-variable.html"> ici </a></p>
<h2>Structure conditionnel IF en PL/SQL</h2>
<p>Pendant l&#8217;écriture de vos blocs pl/sql, il est fort probable que vous deviez faire des test.<br />
Le PL/SQL nous permet d&#8217;évaluer ces tests en utilisant la syntaxe suivante :</p>
<p>IF condition THEN<br />
   commandes ;<br />
[ELSEIF condition THEN<br />
   commandes ;]<br />
[ELSE<br />
  commandes ;]<br />
END IF</p>
<p>Seuls les mots clé IF et END IF; sont obligatoires. Les clauses ELSIF et ELSE sont facultatives </p>
<p>Nous allons effectuer un test simple.</p>
<pre class="brush: sql">
 DECLARE
      iPanier INTEGER := 0 ;
    BEGIN
          IF iPanier = 0 THEN
            DBMS_OUTPUT.PUT_LINE( &#039;votre panier est vide&#039; ) ;
         ELSE
            DBMS_OUTPUT.PUT_LINE( &#039;votre panier possède un objet&#039; ) ;
         END IF ;
   END ;
   /
</pre>
<p>Les opérateurs utilisés dans les expressions conditionnelles sont :
<ul>
<li>=</li>
<li><</li>
<li>></li>
<li><=</li>
<li>>=</li>
<li><></li>
<li>!=</li>
<li>~=</li>
<li>^=</li>
<li>IS NULL</li>
<li>BETWEEN</li>
<li>LIKE</li>
<li>IN</li>
<li>NOT</li>
<li>AND</li>
<li>OR</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.waanser.com/pl-sql/38-initiation-en-plsql.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Présentation PL/SQL</title>
		<link>http://www.waanser.com/pl-sql/11-presentation-plsql.html</link>
		<comments>http://www.waanser.com/pl-sql/11-presentation-plsql.html#comments</comments>
		<pubDate>Wed, 17 Dec 2008 22:34:33 +0000</pubDate>
		<dc:creator>roul</dc:creator>
				<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[Présentation]]></category>

		<guid isPermaLink="false">http://www.waanser.com/?p=11</guid>
		<description><![CDATA[Le PL/SQL ne vous parle pas ? Dans cette article nous allons juste vous expliquer pourquoi le PL/SQL a vu le jour et à quoi il sert réellement. L’utilité du PL/SQL Pourquoi utiliser le PL/SQL ? Principalement pour l’optimisation du traitement des données en BDD (base de données). En effet le traitement des données par [...]]]></description>
			<content:encoded><![CDATA[<p>Le PL/SQL ne vous parle pas ?<br />
Dans cette article nous allons juste vous expliquer pourquoi le PL/SQL a vu le jour et à quoi il sert réellement.<br />
 <span id="more-11"></span></p>
<h2>L’utilité du PL/SQL</h2>
<p>Pourquoi utiliser le PL/SQL ?<br />
Principalement pour l’optimisation du traitement des données en BDD (base de données).</p>
<p>En effet le traitement des données par le PL/SQL est interne. C&#8217;est à dire que c’est la base de donnée Oracle qui gère tout le traitement des données sans passer par des logiciels tiers. Cela limite donc le temps de communication entre ces logiciels tiers et Oracle.</p>
<p>Le PL/SQL assure aussi beaucoup plus de sécurité. Enfin l’intérêt du langage PL/SQL est qu’il soit portable sur toute sorte d’application.</p>
<h2>Fonctionnement du PL/SQL</h2>
<p>Le PL/SQL est un langage procédural structuré en blocs.<br />
Principalement le PL/SQL manipule des structures de contrôle (tests, boucles), des variables (ainsi que leur type). Il peut aussi gérer les curseurs et les erreurs.</p>
<p>Dans cet article on va parler de bloc SQL. Ces blocs PL/SQL sont la plupart du temps stockés dans la base de données sous forme de procédure stockée, fonction ou trigger.<br />
Le bloc PL/SQL est composé de SQL et de PL/SQL. Le SQL est traité pas le moteur SQL et le PL/SQL est géré par le moteur PL/SQL.</p>
<div id="attachment_43" class="wp-caption alignnone" style="width: 374px"><img src="http://media.waanser.com/2008/12/plsql.png" alt="PL/SQL architecture" title="PL/SQL architecture" width="364" height="285" class="size-full wp-image-43" /><p class="wp-caption-text">PL/SQL architecture</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.waanser.com/pl-sql/11-presentation-plsql.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
