<?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>Oracle - Concepts et Exemples &#187; pl/sql</title>
	<atom:link href="https://blog.developpez.com/pachot/tag/plsql-2/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/pachot</link>
	<description>Les fonctionalités et concepts d&#039;Oracle à partir de traductions et de démos</description>
	<lastBuildDate>Sun, 03 Apr 2016 20:36:21 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>12c: inclure une fonction PL/SQL dans la requête SQL</title>
		<link>https://blog.developpez.com/pachot/12c_with_plsql/</link>
		<comments>https://blog.developpez.com/pachot/12c_with_plsql/#comments</comments>
		<pubDate>Sun, 28 Jul 2013 19:24:15 +0000</pubDate>
		<dc:creator><![CDATA[pachot]]></dc:creator>
				<category><![CDATA[12c]]></category>
		<category><![CDATA[pl/sql]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/pachot/?p=596</guid>
		<description><![CDATA[En 12c, on peut mettre une fonction PL/SQL dans la clause WITH d&#8217;une requête SQL. Par exemple: with &#160; &#160; &#160;function to_number_or_null(n varchar2) &#160; &#160; &#160;return number deterministic &#160; &#160; &#160;is &#160; &#160; &#160; begin &#160; &#160; &#160; &#160;return to_number(n); &#8230; <a href="https://blog.developpez.com/pachot/12c_with_plsql/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>En 12c, on peut mettre une fonction PL/SQL dans la clause WITH d&rsquo;une requête SQL.<br />
Par exemple:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">with <br />
&nbsp; &nbsp; &nbsp;function to_number_or_null(n varchar2) <br />
&nbsp; &nbsp; &nbsp;return number deterministic<br />
&nbsp; &nbsp; &nbsp;is<br />
&nbsp; &nbsp; &nbsp; begin<br />
&nbsp; &nbsp; &nbsp; &nbsp;return to_number(n);<br />
&nbsp; &nbsp; &nbsp; exception<br />
&nbsp; &nbsp; &nbsp; &nbsp;when others then return null;<br />
&nbsp; &nbsp; &nbsp; end; <br />
select * from v$parameter where name='db_block_size' and to_number_or_null(value)=8192; <br />
/</div></div>
<p>Ici j&rsquo;ai déclaré une fonction vite fait qui m&rsquo;évite de récupérer un &lsquo;ORA-01722: invalid number&rsquo; lorsque la valeur n&rsquo;est pas un nombre.</p>
<p>On s&rsquo;aperçoit que l&rsquo;exécution est beaucoup plus rapide lorsqu&rsquo;il y a beaucoup d&rsquo;appels. (cf. <a href="http://ora-demo.pachot.net/12c_with_plsql.html#2" title="demo" target="_blank">demo</a>). C&rsquo;est plus rapide que d&rsquo;appeler une fonction stockée &#8211; sauf pour une fonction deterministic qui bénéficie du cache.</p>
<p>A noter: le temps d&rsquo;exécution n&rsquo;est pas comptabilisé dans &lsquo;PL/SQL execution elapsed time&rsquo; du Time Model</p>
<p>Attention: certains clients (comme sqlplus 11g) posent des problèmes à cause des points-virgules dans la requête.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>12c: PL/SQL: retour implicite d&#8217;un refcursor au client</title>
		<link>https://blog.developpez.com/pachot/12c_sqlplus_refcursor/</link>
		<comments>https://blog.developpez.com/pachot/12c_sqlplus_refcursor/#comments</comments>
		<pubDate>Mon, 22 Jul 2013 06:30:15 +0000</pubDate>
		<dc:creator><![CDATA[pachot]]></dc:creator>
				<category><![CDATA[12c]]></category>
		<category><![CDATA[pl/sql]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/pachot/?p=326</guid>
		<description><![CDATA[En 11g pour afficher le résultat d&#8217;un curseur le pl/sql devait renvoyer le curseur dans une variable: variable r refcursor exec open :r for select * from dba_users where user_id &#60;10; print r En 12c avec dbms_sql.return_result() on peut le &#8230; <a href="https://blog.developpez.com/pachot/12c_sqlplus_refcursor/">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>En 11g pour afficher le résultat d&rsquo;un curseur le pl/sql devait renvoyer le curseur dans une variable:</p>
<pre>variable r refcursor
exec open :r for select * from dba_users where user_id &lt;10;
print r</pre>
<p>En 12c avec dbms_sql.return_result() on peut le faire afficher à sqlplus un peu à la manière de dbms_output</p>
<pre>declare
  c sys_refcursor;
 begin
  open c for select * from dba_users where user_id &lt;10;
  dbms_sql.return_result(c);
 end;
 /</pre>
<p><ins datetime="2013-06-26T19:34:14+00:00">La <a href="http://ora-demo.pachot.net/12c_sqlplus_refcursor.html" title="demo" target="_blank">demo</a> est plus parlante.</ins></p>
<p>Cette fonctionnalité a été introduite pour pouvoir retourner un ResultSet avec Statement.getResultSet() par exemple en Java, même pour un statement qui serait un appel à une procédure stockée. Afin le code client soit compatible avec le fonctionnement d&rsquo;autres SGBD, et donc possibilité de changer de SGBD en ne modifiant que le code des procédures stockées (et ni leur signature, ni le code client). </p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
