<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>PL/SQL en Español</title>
	<atom:link href="http://plsqlenespanol.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://plsqlenespanol.wordpress.com</link>
	<description></description>
	<lastBuildDate>Sat, 14 Jul 2007 22:25:39 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='plsqlenespanol.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>PL/SQL en Español</title>
		<link>http://plsqlenespanol.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://plsqlenespanol.wordpress.com/osd.xml" title="PL/SQL en Español" />
	<atom:link rel='hub' href='http://plsqlenespanol.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Capitulo 4</title>
		<link>http://plsqlenespanol.wordpress.com/2007/07/14/capitulo-4/</link>
		<comments>http://plsqlenespanol.wordpress.com/2007/07/14/capitulo-4/#comments</comments>
		<pubDate>Sat, 14 Jul 2007 22:23:21 +0000</pubDate>
		<dc:creator>delfinonunez</dc:creator>
				<category><![CDATA[Curso]]></category>

		<guid isPermaLink="false">http://plsqlenespanol.wordpress.com/2007/07/14/identificadores/</guid>
		<description><![CDATA[Identificadores Un identificador es un nombre para las unidades de PL/SQL, las cuales pueden ser: Constantes Variables Excepciones Cursores Variables de cursor Sub programas Paquetes Un identificador consiste de letras seguidas de manera opcional por más letras, numerales, underscores, hasta un máximo de 30 caracteres además que debe comenzar con una letra. Otros caracteres como [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=plsqlenespanol.wordpress.com&amp;blog=1247465&amp;post=8&amp;subd=plsqlenespanol&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Identificadores<br />
</h2>
<p>Un identificador es un nombre para las unidades de PL/SQL, las cuales pueden ser:
</p>
<ul>
<li>Constantes
</li>
<li>Variables
</li>
<li>Excepciones
</li>
<li>Cursores
</li>
<li>Variables de cursor
</li>
<li>Sub programas
</li>
<li>Paquetes
</li>
</ul>
<p>Un identificador consiste de letras seguidas de manera opcional por más letras, numerales, <em>underscores,</em> hasta un máximo de 30 caracteres además que debe comenzar con una letra. Otros caracteres como guiones(-), diagonales(/) y espacios no son aceptados.
</p>
<p>Ejemplos invalidos:
</p>
<p>Hombre&amp;mujeres: no es valido por el <em>ampersand</em>.
</p>
<p>Debito-total: no es valido por el guion.
</p>
<p>On/off: no es valido por la diagonal.
</p>
<p>User   id: no es valido por los espacios.
</p>
<p>
 </p>
<p>Ejemplos validos:
</p>
<p>Total$endolares
</p>
<p>No#Emp
</p>
<p>User_id
</p>
<p>
 </p>
<p>El nombre del identificador puede ir en mayúsculas o minúsculas, para PL/SQL no hay diferencia al respecto.
</p>
<p>Los siguientes significan lo mismo:
</p>
<p>Apellido_parterno
</p>
<p>APELLIDO_PATERNO
</p>
<p>
 </p>
<h2>Palabras reservadas<br />
</h2>
<p>Algunos identificadores llamados palabras reservadas tienen un significado especial para PL/SQL. Por ejemplo las palabras BEGIN y END son reservadas.
</p>
<p>
 </p>
<h2>Identificadores entre comillas &#8220;&#8221;<br />
</h2>
<p>Para flexibilidad PL/SQL permite tener identificadores entre comillas.
</p>
<p>Ejemplos:
</p>
<p>&#8220;X+Y&#8221;
</p>
<p>&#8220;apellido paterno&#8221;
</p>
<p>&#8220;on/off&#8221;
</p>
<p>Aunque anterior mente se menciono que no era posible tener caracteres &#8220;raros&#8221; en el nombre, en el caso que se utilice un identificador entre comillas este puede contener cualquier carácter.
</p>
<p>
 </p>
<p style="margin-left:46pt;"><span style="color:#4f81bd;"><strong><em>NOTA.- Aunque PL/SQL permite declarar este tipo de identificadores en mi experiencia nunca he tenido la necesidad de hacerlo. Otra cosa que hay que tener en cuenta  es que una vez que se declara un identificador de esta manera cualquier referencia dentro del código debe ser de esa misma manera.<br />
</em></strong></span></p>
<p>
 </p>
<h1>Literales<br />
</h1>
<p>Una literal es un valor explicito que no representa un identificador como números, caracteres, cadenas de caracteres.
</p>
<p>
<h2>Números</h2>
<p>.-  Dos tipos de literales numéricas existen para las operaciones: enteros y reales. Un entero es un numero completo sin punto decimal y puede tener signo (+,-). Un número real es aquel que es completo o fraccional con el punto decimal además de tener signo.
</p>
<p>Ejemplos:
</p>
<p>Entero: 030, 6, -20, +45677
</p>
<p>Real: 6.666, 0.0, -15.9
</p>
<p>
 </p>
<p>
 </p>
<h3>Notación Científica<br />
</h3>
<p>Los números también pueden especificarse en notación científica por medio de la letra E  o e.
</p>
<p>Ejemplos:
</p>
<p>2E5, 1.03E-7, 3.14159e0, -1E23, -9.7e-23
</p>
<p>
 </p>
<h2>Literales de Carácter y cadenas<br />
</h2>
<p>Los caracteres y cadenas en PL/SQL son encerrados entre comillas sencillas (apostrofes). Estos pueden contener todo tipo de caracteres desplegables dentro del set de caracteres de PL/SQL como: letras, números, espacios y símbolos especiales.
</p>
<p>Ejemplos:
</p>
<p>&#8216;Z&#8217;, &#8216;%&#8217;,&#8217;75656ddff&#8217;, &#8217;34435%$#%$)&#8217;
</p>
<p>
 </p>
<p style="margin-left:46pt;"><span style="color:#4f81bd;"><strong><em>NOTA.- Cuidado de no confundir el nombre de un identificador con comillas dobles (&#8220;valor-total&#8221;) con el valor de una literal de caracteres (&#8216;valor-total&#8217;), estas son dos cosas diferentes para PL/SQL. Recuerde que siempre que desee utilizar una cadena(string) debe hacerlo en comillas sencillas.<br />
</em></strong></span></p>
<h2>Literales Booleanas<br />
</h2>
<p>Estas literales únicamente tienen los valores predefinidos TRUE, FALSE y NULL.  Recuerde que este tipo de literales son valores y no cadenas de caracteres.
</p>
<p>
 </p>
<h2>Literales de tiempo/fecha<br />
</h2>
<p>Este tipo puede tener varios formatos dependiendo el tipo de dato.
</p>
<p>Ejemplo:
</p>
<p><span style="font-family:Courier New;font-size:10pt;">DECLARE<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;">   d1 DATE := DATE &#8217;1998-12-25&#8242;;<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;">   t1 TIMESTAMP := TIMESTAMP &#8217;1997-10-22 13:01:01&#8242;;<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;">   t2 TIMESTAMP WITH TIME ZONE := TIMESTAMP &#8217;1997-01-31 09:26:56.66 +02:00&#8242;;<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;">&#8211; Tres años y dos meses<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;">&#8211; Para mayor precision se utiliza el intervalo day-to-second<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;">   i1 INTERVAL YEAR TO MONTH := INTERVAL &#8217;3-2&#8242; YEAR TO MONTH;<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;">&#8211; Cinco dias, cuatro horas, 3 minutos, 2 segundos y 1 centesima de segundo   i2 INTERVAL DAY TO SECOND := INTERVAL &#8217;5 04:03:02.01&#8242; DAY TO SECOND;<br />
</span></p>
<p>
 </p>
<h2>Comentarios en PL/SQL<br />
</h2>
<p>PL/SQL ignora los comentarios que encuentra en el código. Los comentarios agregan comprensión sobre que esta realizando el programa. Generalmente se recomienda utilizar comentarios para explicar que es lo que esta haciendo un determinado bloque de código. En PL/SQL existen dos tipos de comentarios: por línea y multi linea.
</p>
<h2>Línea simple<br />
</h2>
<p>Este tipo de comentarios comienza con doble guion (&#8211;).
</p>
<p>Ejemplo:
</p>
<p>
<pre><code>BEGIN
</code></pre>
</p>
<p>
<pre><code>-- la siguiente linea no hace nada.
</code></pre>
</p>
<p>
<pre><code>   Null;
</code></pre>
</p>
<p>
<pre><code>   Dbms_output.put_line('esta es una prueba');--imprimir mensaje
</code></pre>
</p>
<p>
<pre><code>END;
</code></pre>
</p>
<p>
<pre><code>/
</code></pre>
</p>
<p>
 </p>
<h2>Multi linea<br />
</h2>
<p>Este tipo de comentarios inicia con (/*) y termina por (*/) teniendo los comentarios entre esos dos delimitadores.
</p>
<p>Ejemplo:
</p>
<p>
<pre><code>DECLARE
</code></pre>
</p>
<p>
<pre><code>   some_condition BOOLEAN;
</code></pre>
</p>
<p>
<pre><code>   pi NUMBER := 3.1415926;
</code></pre>
</p>
<p>
<pre><code>   radius NUMBER := 15;
</code></pre>
</p>
<p>
<pre><code>   area NUMBER;
</code></pre>
</p>
<p>
<pre><code>BEGIN
</code></pre>
</p>
<p>
<pre><code>  /* Hacer una verificacion de codigo */
</code></pre>
</p>
<p>
<pre><code>  IF 2 + 2 = 4 THEN
</code></pre>
</p>
<p>
<pre><code>    some_condition := TRUE; /* Cuando entre aqui va a regresar TRUE */
</code></pre>
</p>
<p>
<pre><code>  END IF;
</code></pre>
</p>
<p>
<pre><code>  /* La siguiente linea calcula el area
</code></pre>
</p>
<p>
<pre><code>Del circulo usando PI, una vez
</code></pre>
</p>
<p>
<pre><code>Calculada el area esta es desplegada en la pantalla.
</code></pre>
</p>
<p>
<pre><code> */
</code></pre>
</p>
<p>
<pre><code>  area := pi * radius**2;
</code></pre>
</p>
<p>
<pre><code>  DBMS_OUTPUT.PUT_LINE('The area is: ' || TO_CHAR(area));
</code></pre>
</p>
<p>
<pre><code>END;
</code></pre>
</p>
<p>
<pre><code>/
</code></pre>
</p>
<p>
 </p>
<p style="margin-left:46pt;"><span style="color:#4f81bd;"><strong><em>NOTA.- No se puede tener comentarios anidados.<br />
</em></strong></span></p>
<p><span style="font-family:Courier New;">Ejemplo:<br />
</span></p>
<p><span style="font-family:Courier New;">Begin<br />
</span></p>
<p><span style="font-family:Courier New;">/* comentario<br />
</span></p>
<p><span style="font-family:Courier New;">/* otro comentario<br />
</span></p>
<p><span style="font-family:Courier New;">Bla bla bla<br />
</span></p>
<p><span style="font-family:Courier New;">*/<br />
</span></p>
<p><span style="font-family:Courier New;">Blablabla<br />
</span></p>
<p><span style="font-family:Courier New;">*/<br />
</span></p>
<p><span style="font-family:Courier New;">End;<br />
</span></p>
<p>
 </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/plsqlenespanol.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/plsqlenespanol.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/plsqlenespanol.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/plsqlenespanol.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/plsqlenespanol.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/plsqlenespanol.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/plsqlenespanol.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/plsqlenespanol.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/plsqlenespanol.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/plsqlenespanol.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/plsqlenespanol.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/plsqlenespanol.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/plsqlenespanol.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/plsqlenespanol.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/plsqlenespanol.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/plsqlenespanol.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=plsqlenespanol.wordpress.com&amp;blog=1247465&amp;post=8&amp;subd=plsqlenespanol&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://plsqlenespanol.wordpress.com/2007/07/14/capitulo-4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50106265fba48b97bf8fc584ac06f3ee?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">delfinonunez</media:title>
		</media:content>
	</item>
		<item>
		<title>Capitulo 3</title>
		<link>http://plsqlenespanol.wordpress.com/2007/07/03/capitulo-3/</link>
		<comments>http://plsqlenespanol.wordpress.com/2007/07/03/capitulo-3/#comments</comments>
		<pubDate>Tue, 03 Jul 2007 02:25:25 +0000</pubDate>
		<dc:creator>delfinonunez</dc:creator>
				<category><![CDATA[Curso]]></category>

		<guid isPermaLink="false">http://plsqlenespanol.wordpress.com/2007/07/03/capitulo-2-2/</guid>
		<description><![CDATA[Aunque los bloques anónimos son muy útiles, sobre todo en la creación de scripts para ejecución batch ó de otro tipo. Regularmente se utilizan los bloques nombrados, algunos ejemplos que ya se mencionaron son los stored procedures, functions, triggers,etc. Bloques anidados En el capitulo anterior mencione que se pueden tener bloques dentro de otros bloques, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=plsqlenespanol.wordpress.com&amp;blog=1247465&amp;post=7&amp;subd=plsqlenespanol&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Aunque los bloques anónimos son muy útiles, sobre todo en la creación de scripts para ejecución <em>batch</em> ó de otro tipo. Regularmente se utilizan los bloques nombrados, algunos ejemplos que ya se mencionaron son los <em>stored procedures, functions, triggers,etc.<br />
</em></p>
<h2>Bloques anidados<br />
</h2>
<p>En el capitulo anterior mencione que se pueden tener bloques dentro de otros bloques, a este tipo de diseño se le conoce como bloques anidados (nested blocks). Como ya se mencionó anteriormente, PL/SQL esta basado en el lenguaje de programación ADA y por consiguiente Pascal, PL/SQL es un lenguaje de bloques estructurados. En los ejemplos anteriores mencione que un bloque anónimo puede contener otro bloque anónimo; en el caso de los bloques nombrados sucede lo mismo, éstos pueden tener bloques anónimos y/o nombrados dentro de ellos.
</p>
<p>Ejemplo:
</p>
<p>
<pre><code>PROCEDURE print_message IS
</code></pre>
</p>
<p>
<pre><code>BEGIN
</code></pre>
</p>
<p>
<pre><code>    DBMS_OUTPUT.PUT_LINE('prueba');
</code></pre>
</p>
<p>
 </p>
<p>
<pre><code>    BEGIN
</code></pre>
</p>
<p>
<pre><code>       DBMS_OUTPUT.PUT_LINE('bloque interno');
</code></pre>
</p>
<p>
<pre><code>    EXCEPTION
</code></pre>
</p>
<p>
<pre><code>    WHEN OTHERS THEN
</code></pre>
</p>
<p>
<pre><code>       DBMS_OUTPUT.PUT_LINE('error encontrado');
</code></pre>
</p>
<p>
<pre><code>    END;
</code></pre>
</p>
<p>
 </p>
<p>
<pre><code>EXCEPTION
</code></pre>
</p>
<p>
<pre><code>WHEN OTHERS THEN
</code></pre>
</p>
<p>
<pre><code>    DBMS_OUTPUT.PUT_LINE('error encontrado en bloque principal');
</code></pre>
</p>
<p>
<pre><code>END;
</code></pre>
</p>
<p>
 </p>
<p>En el ejemplo anterior hay un bloque anónimo dentro de un bloque nombrado (procedure), dentro del bloque anónimo se va a imprimir el mensaje <em>bloque interno</em> y/o el mensaje de error <em> error encontrado.<br />
</em></p>
<p>
<pre><code>PROCEDURE print_message IS
</code></pre>
</p>
<p>
 </p>
<p>
<pre><code>   procedure mess is
</code></pre>
</p>
<p>
<pre><code>   begin
</code></pre>
</p>
<p>
<pre><code>     dbms_output.put_line('programa interno');
</code></pre>
</p>
<p>
<pre><code>   end;
</code></pre>
</p>
<p>
<pre><code>BEGIN
</code></pre>
</p>
<p>
<pre><code>   mess();
</code></pre>
</p>
<p>
<pre><code>END;
</code></pre>
</p>
<p>
 </p>
<p>En éste ejemplo se puede ver que se tiene un <em>stored procedure</em> dentro de otro <em>stored procedure</em>.
</p>
<p>
 </p>
<h2>El conjunto de caracteres de PL/SQL (character set)<br />
</h2>
<p>El tipo de caracteres que se utiliza en PL/SQL es el US7ASCII.
</p>
<div>
<table style="border-collapse:collapse;" border="0">
<col>
<col>
<tbody valign="top">
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:solid black 0.5pt;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p><strong>Tipo</strong></p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:solid black 0.5pt;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p><strong>Caracteres</strong></p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>Letras</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>A-Z, a-z</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>Dígitos</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>0-9</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>Símbolos</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>~ ! @ # $ % * ( ) _ &#8211; + = | : ; &#8221; &#8216; &lt; &gt; , . ? / ^</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>Espacios en blanco</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>Tab, espacio, nueva línea, retorno de carro.</p>
</td>
</tr>
</tbody>
</table>
</div>
<p>
 </p>
<p>Símbolos en PL/SQL
</p>
<div>
<table style="border-collapse:collapse;" border="0">
<col>
<col>
<tbody valign="top">
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:solid black 0.5pt;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p><strong>Símbolo</strong></p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:solid black 0.5pt;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p><strong>Descripción</strong></p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>;</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>Termina las líneas de PL/SQL</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>%</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>Indicador de atributos como %ISOPEN de los cursores ó %ROWTYPE para la declaración de variables.</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>_</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p><em>Underscore</em>. Se utiliza en la condition de LIKE.</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>@</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>Indicador de localización remota.</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>:</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>Variables <em>bind.</em></p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>&lt;&gt;, ¡=, ^=,~=</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>Diferente</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>||</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>Concatenación</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>&lt;&lt;   &gt;&gt;</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>Etiquetas</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>&lt;=,&gt;=</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>Comparación</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>:=</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>Asignación de valores.</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>=&gt;</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>Operador de asociación</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>..</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>Rangos</p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:solid black 0.5pt;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>/*  */
</p>
<p>&#8211;</p>
</td>
<td style="padding-left:7px;padding-right:7px;border-top:none;border-left:none;border-bottom:solid black 0.5pt;border-right:solid black 0.5pt;">
<p>Comentarios de varias líneas
</p>
<p>Comentarios de una linea</p>
</td>
</tr>
</tbody>
</table>
</div>
<p>
 </p>
<h3>Respuestas del capitulo anterior.<br />
</h3>
<p>
<pre><code>1.-
</code></pre>
</p>
<p>
<pre><code>SQL&gt; declare
</code></pre>
</p>
<p>
<pre><code>  2  v_var number;
</code></pre>
</p>
<p>
<pre><code>  3  begin
</code></pre>
</p>
<p>
<pre><code>  4  null;
</code></pre>
</p>
<p>
<pre><code>  5  exception
</code></pre>
</p>
<p>
<pre><code>  6  when others then
</code></pre>
</p>
<p>
<pre><code>  7  null;
</code></pre>
</p>
<p>
<pre><code>  8  end;
</code></pre>
</p>
<p>
<pre><code>  9  /
</code></pre>
</p>
<p>
 </p>
<p>
<pre><code>PL/SQL procedure successfully completed.
</code></pre>
</p>
<p>
 </p>
<p>
<pre><code>2.-
</code></pre>
</p>
<p>
<pre><code>SQL&gt; begin
</code></pre>
</p>
<p>
<pre><code>  2     begin
</code></pre>
</p>
<p>
<pre><code>  3       begin
</code></pre>
</p>
<p>
<pre><code>  4         null;
</code></pre>
</p>
<p>
<pre><code>  5       end;
</code></pre>
</p>
<p>
<pre><code>  6     end;
</code></pre>
</p>
<p>
<pre><code>  7  end;
</code></pre>
</p>
<p>
<pre><code>  8  /
</code></pre>
</p>
<p>
 </p>
<p>
<pre><code>PL/SQL procedure successfully completed.
</code></pre>
</p>
<p>
 </p>
<p>
<pre><code>3.-
</code></pre>
</p>
<p>
<pre><code>SQL&gt; begin
</code></pre>
</p>
<p>
<pre><code>  2     begin
</code></pre>
</p>
<p>
<pre><code>  3       null;
</code></pre>
</p>
<p>
<pre><code>  4     end;
</code></pre>
</p>
<p>
<pre><code>  5     begin
</code></pre>
</p>
<p>
<pre><code>  6       null;
</code></pre>
</p>
<p>
<pre><code>  7     end;
</code></pre>
</p>
<p>
<pre><code>  8  end;
</code></pre>
</p>
<p>
<pre><code>  9  /
</code></pre>
</p>
<p>
 </p>
<p>
<pre><code>PL/SQL procedure successfully completed.
</code></pre>
</p>
<p>
 </p>
<p>
<pre><code>4.-
</code></pre>
</p>
<p>
<pre><code>SQL&gt; begin
</code></pre>
</p>
<p>
<pre><code>  2  null;
</code></pre>
</p>
<p>
<pre><code>  3  exception
</code></pre>
</p>
<p>
<pre><code>  4  when others then
</code></pre>
</p>
<p>
<pre><code>  5     begin
</code></pre>
</p>
<p>
<pre><code>  6       null;
</code></pre>
</p>
<p>
<pre><code>  7     end;
</code></pre>
</p>
<p>
<pre><code>  8  end;
</code></pre>
</p>
<p>
<pre><code>  9  /
</code></pre>
</p>
<p>
 </p>
<p>
<pre><code>PL/SQL procedure successfully completed.</code></pre></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/plsqlenespanol.wordpress.com/7/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/plsqlenespanol.wordpress.com/7/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/plsqlenespanol.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/plsqlenespanol.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/plsqlenespanol.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/plsqlenespanol.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/plsqlenespanol.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/plsqlenespanol.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/plsqlenespanol.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/plsqlenespanol.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/plsqlenespanol.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/plsqlenespanol.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/plsqlenespanol.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/plsqlenespanol.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/plsqlenespanol.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/plsqlenespanol.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=plsqlenespanol.wordpress.com&amp;blog=1247465&amp;post=7&amp;subd=plsqlenespanol&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://plsqlenespanol.wordpress.com/2007/07/03/capitulo-3/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50106265fba48b97bf8fc584ac06f3ee?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">delfinonunez</media:title>
		</media:content>
	</item>
		<item>
		<title>Capitulo 2</title>
		<link>http://plsqlenespanol.wordpress.com/2007/06/28/capitulo-2/</link>
		<comments>http://plsqlenespanol.wordpress.com/2007/06/28/capitulo-2/#comments</comments>
		<pubDate>Thu, 28 Jun 2007 00:35:21 +0000</pubDate>
		<dc:creator>delfinonunez</dc:creator>
				<category><![CDATA[Curso]]></category>

		<guid isPermaLink="false">http://plsqlenespanol.wordpress.com/2007/06/28/capitulo-2/</guid>
		<description><![CDATA[Estructura de un bloque de PL/SQL La unidad mínima de agrupamiento de código en PL/SQL es el bloque. Un bloque de PL/SQL contiene la ejecución, la declaración de variables y la sección de manejo de excepciones (errores). PL/SQL permite tener bloques anónimos y bloques nombrados (procedimientos, funciones, triggers, etc). Un bloque de PL/SQL contiene las [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=plsqlenespanol.wordpress.com&amp;blog=1247465&amp;post=5&amp;subd=plsqlenespanol&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Estructura de un bloque de PL/SQL</h2>
<p>La unidad mínima de agrupamiento de código en PL/SQL es el <em>bloque</em>. Un bloque de PL/SQL contiene la ejecución, la declaración de variables y la sección de manejo de excepciones (errores). PL/SQL permite tener bloques <em>anónimos</em> y bloques <em>nombrados</em> (procedimientos, funciones, <em>triggers</em>, etc).</p>
<p>Un bloque de PL/SQL contiene las siguientes 4 secciones:</p>
<p style="background:#d9d9d9 none repeat scroll 0 50%;">ENCABEZADO (HEADER)</p>
<p>IS</p>
<p style="background:#d9d9d9 none repeat scroll 0 50%;">    SECCIÓN DE DECLARACIÓN</p>
<p>BEGIN</p>
<p style="background:#d9d9d9 none repeat scroll 0 50%;">    SECCIÓN DE EJECUCIÓN</p>
<p>EXCEPTION</p>
<p style="background:#d9d9d9 none repeat scroll 0 50%;">    EXCEPCIONES</p>
<p>END;</p>
<h4>Encabezado (opcional)</h4>
<p>Esta sección es utilizada para los bloques nombrados como los <em>stored procedures, functions, etc.</em>  Esta parte identifica al bloque por medio de un nombre.</p>
<h4>Declaración (opcional)</h4>
<p>Como su nombre lo indica aquí se realizan las declaraciones de variables, tipos de datos, cursores, etc.</p>
<h4>Ejecución (obligatoria)</h4>
<p>Es el corazón de un programa de PL/SQL, aquí es donde se realizan todas las operaciones que va a realizar el programa.</p>
<h4>Excepciones (opcional)</h4>
<p>Maneja las excepciones generadas por el programa en tiempo de ejecución.</p>
<h3>Bloque Anónimo</h3>
<p>Vamos a comenzar por el tipo de bloque mas sencillo que existe, éste tipo de bloque no contiene sección de encabezado por lo tanto no tiene un nombre asignado, por eso se llama bloque anónimo. Este tipo de bloque no puede ser llamado por otro código debido a que no tiene un <em>handler</em> ó manejador por el cuál se identifique al programa, básicamente los bloques anónimos sirven de contenedores para ejecutar pequeños <em>scripts</em> o hacer llamadas a otros bloques PL/SQL como <em>procedures o funciones</em>.</p>
<p>Sintaxis:</p>
<p>[ DECLARE</p>
<p><em>... declaración de variables, constantes, tipos, etc ...</em> ]<br />
BEGIN</p>
<p><em>&#8230; todo lo que se desea ejecutar &#8230;</em><br />
[ EXCEPTION</p>
<p><em>... manejadores de excepciones ...</em> ]<br />
END;<br />
Hay que notar que las secciones en &#8220;[ ]&#8221; son opcionales y no es necesario ponerlas en un bloque anónimo a menos que se vayan a utilizar.</p>
<h3>EJEMPLOS</h3>
<p>El primer ejemplo muestra un código de PL/SQL con lo mínimo que debe llevar un bloque anónimo.</p>
<table style="background:#c6d9f1 none repeat scroll 0 50%;border-collapse:collapse;" border="0">
<tr>
<td style="padding-left:7px;padding-right:7px;">
<p style="background:#c6d9f1 none repeat scroll 0 50%;"><strong>SQL&gt; BEGIN</strong></p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;">
<p style="background:#c6d9f1 none repeat scroll 0 50%;"><strong>  2     NULL;</strong></p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;">
<p style="background:#c6d9f1 none repeat scroll 0 50%;"><strong>  3  END;</strong></p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;">
<p style="background:#c6d9f1 none repeat scroll 0 50%;"><strong>  4  /</strong></p>
</td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;">
<p style="background:#c6d9f1 none repeat scroll 0 50%;"><strong>PL/SQL procedure successfully completed.</strong></p>
</td>
</tr>
</table>
<p>El bloque anterior únicamente incluye la sección de ejecución y como única instrucción esta la sentencia NULL que simplemente le dice a Oracle que no haga nada.</p>
<p>El siguiente ejemplo utiliza la sección de declaración para utilizar una variable de tipo cadena y desplegarla en la pantalla por medio del procedimiento PUT_LINE que funciona en SQL*Plus.</p>
<table style="background:#c6d9f1 none repeat scroll 0 50%;border-collapse:collapse;" border="0">
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>SQL&gt; DECLARE</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>  2     v_mensaje VARCHAR2(30);</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>  3  BEGIN</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>  4     v_mensaje := &#8216;Hola mundo&#8217;;</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>  5     dbms_output.put_line(v_mensaje);</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>  6  END;</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>  7  /</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>Hola mundo</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>PL/SQL procedure successfully completed.</strong></td>
</tr>
</table>
<p>El siguiente ejemplo contiene la sección de <em>exception</em>:</p>
<table style="background:#c6d9f1 none repeat scroll 0 50%;border-collapse:collapse;" border="0">
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>SQL&gt; DECLARE</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>  2     v_resultado NUMBER;</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>  3  BEGIN</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>  4     v_resultado := 10/0;</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>  5     dbms_output.put_line(v_resultado);</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>  6  EXCEPTION</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>  7     WHEN OTHERS THEN</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>  8     DBMS_OUTPUT.PUT_LINE(&#8216;Error en el programa&#8217;);</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>  9  END;</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong> 10  /</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>Error en el programa</strong></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"></td>
</tr>
<tr>
<td style="padding-left:7px;padding-right:7px;"><strong>PL/SQL procedure successfully completed.</strong></td>
</tr>
</table>
<p>El próximo ejemplo muestra un bloque anónimo dentro de otro bloque anónimo (bloques anidados).</p>
<table style="background:#c6d9f1 none repeat scroll 0 50%;border-collapse:collapse;" border="0">
<tr style="height:374px;">
<td style="padding-left:7px;padding-right:7px;">
<pre>SQL&gt; BEGIN</pre>
<p>2     DBMS_OUTPUT.PUT_LINE(&#8216;PRINCIPAL&#8217;);<br />
3     BEGIN<br />
4             DBMS_OUTPUT.PUT_LINE(&#8216;DENTRO DEL PRINCIPAL&#8217;);<br />
5             DBMS_OUTPUT.PUT_LINE(10/0);<br />
6     EXCEPTION<br />
7     WHEN OTHERS THEN<br />
8             DBMS_OUTPUT.PUT_LINE(&#8216;ERROR EN BLOQUE ANIDADO&#8217;);<br />
9     END;<br />
10<br />
11     DBMS_OUTPUT.PUT_LINE(50/10);<br />
12  EXCEPTION<br />
13  WHEN OTHERS THEN<br />
14     DBMS_OUTPUT.PUT_LINE(&#8216;ERROR EN PRINCIPAL&#8217;);<br />
15  END;<br />
16  /<br />
PRINCIPAL<br />
DENTRO DEL PRINCIPAL<br />
ERROR EN BLOQUE ANIDADO<br />
5<br />
PL/SQL procedure successfully completed.</td>
</tr>
</table>
<h3>EJERCICIOS</h3>
<ol>
<li>Entre a SQL*Plus o TOAD y escriba un bloque anónimo con las secciones de declaración, ejecución y excepciones.</li>
<li>Escriba un bloque anónimo que contenga dos bloques anidados uno dentro del otro.</li>
<li>Escriba un bloque anónimo que contenga dos bloques anidados dentro del bloque principal únicamente.</li>
<li>Escriba un bloque anónimo dentro de la sección de excepciones.</li>
</ol>
<p>Las soluciones las voy a poner en el siguiente capitulo…</p>
<p style="margin-left:18pt;">&nbsp;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/plsqlenespanol.wordpress.com/5/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/plsqlenespanol.wordpress.com/5/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/plsqlenespanol.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/plsqlenespanol.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/plsqlenespanol.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/plsqlenespanol.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/plsqlenespanol.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/plsqlenespanol.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/plsqlenespanol.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/plsqlenespanol.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/plsqlenespanol.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/plsqlenespanol.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/plsqlenespanol.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/plsqlenespanol.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/plsqlenespanol.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/plsqlenespanol.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=plsqlenespanol.wordpress.com&amp;blog=1247465&amp;post=5&amp;subd=plsqlenespanol&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://plsqlenespanol.wordpress.com/2007/06/28/capitulo-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50106265fba48b97bf8fc584ac06f3ee?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">delfinonunez</media:title>
		</media:content>
	</item>
		<item>
		<title>Capitulo 1</title>
		<link>http://plsqlenespanol.wordpress.com/2007/06/16/un-poco-de-historia/</link>
		<comments>http://plsqlenespanol.wordpress.com/2007/06/16/un-poco-de-historia/#comments</comments>
		<pubDate>Sat, 16 Jun 2007 21:03:50 +0000</pubDate>
		<dc:creator>delfinonunez</dc:creator>
				<category><![CDATA[Curso]]></category>

		<guid isPermaLink="false">http://plsqlenespanol.wordpress.com/2007/06/16/un-poco-de-historia/</guid>
		<description><![CDATA[Un poco de historia Primero, ¿que es PL/SQL?, bueno PL/SQL significa Procedural Language extensions to the Structured Query Language, básicamente es la utilización de SQL dentro de un lenguaje procedural . PL/SQL es un lenguaje basado en otro lenguaje de programación llamado ADA, el cual fue un lenguaje diseñado por el departamento de defensa de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=plsqlenespanol.wordpress.com&amp;blog=1247465&amp;post=4&amp;subd=plsqlenespanol&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-family:Verdana;font-size:14pt;"><strong>Un poco de historia</strong></span></p>
<p><span style="font-family:Verdana;">Primero, ¿que es PL/SQL?, bueno PL/SQL significa <em>Procedural Language extensions to the Structured Query Language</em>, básicamente es la utilización de SQL dentro de un lenguaje <em>procedural</em> .<br />
</span></p>
<p><span style="font-family:Verdana;">PL/SQL es un lenguaje basado en otro lenguaje de programación llamado ADA, el cual fue un lenguaje diseñado por el departamento de defensa de Estados Unidos. Ada es un lenguaje que se enfoca en la abstracción, ocultamiento de información y otras estrategias de diseño. Gracias a este diseño PL/SQL es un lenguaje muy poderoso que incluye la mayoría de los elementos de los lenguajes <em>procedurales</em>.<br />
</span></p>
<p><span style="font-family:Verdana;">Entre los diferentes elementos se encuentran:<br />
</span></p>
<ul>
<li><span style="font-family:Verdana;">Amplia variedad de tipos de datos para declarar números, cadenas de caracteres, registros, arreglos (colecciones en Oracle) y en las ultimas versiones se ha incluido manejar XML.<br />
</span></li>
<li><span style="font-family:Verdana;">Estructuras de control iterativas (ciclos), secuenciales, condicionales (<em>if, case</em>, etc).<br />
</span></li>
<li><span style="font-family:Verdana;">Manejo de excepciones para atrapar errores.<br />
</span></li>
<li><span style="font-family:Verdana;">Reutilización de código como procedimientos, funciones, <em>triggers</em>, objetos (POO) y paquetes.<br />
</span></li>
</ul>
<p><span style="font-family:Verdana;">Una de las cosas que a mi en lo personal me gusta mucho de PL/SQL es su integración con SQL, esto quiere decir que para realizar una consulta a la base de datos no es necesario hacer una conexión por medio de un API externo como ODBC, JDBC, etc para poderla realizar, si no que unicamente se incluye la sentencia SQL dentro del código de PL (de ahora en adelante me voy a referir a PL/SQL con PL) para seleccionar, actualizar, insertar o borrar información.<br />
</span></p>
<p><span style="font-family:Verdana;font-size:14pt;"><strong>Inicios de PL/SQL<br />
</strong></span></p>
<p><span style="font-family:Verdana;">PL/SQL apareció a partir de la versión 6 de la base de datos Oracle como en 1988, y en un inicio como la mayoría de las tecnologías estaba muy limitado y únicamente estaba enfocada a realizar operaciones tipo <em>batch</em> aunque ya se le veía un futuro prometedor.<br />
</span></p>
<p><span style="font-family:Verdana;font-size:14pt;"><strong>Portabilidad<br />
</strong></span></p>
<p><span style="font-family:Verdana;">Bueno, yo creo que no es necesario mencionarlo pero gracias a que PL/SQL esta integrado fuertemente a la base de datos este puede ejecutarse en cualquier plataforma en la cual este instalada la base de datos de Oracle, actualmente creo que se encuentra en la mayoría de las principales plataformas como Unix (Solaris, HP, etc), Windows, Linux (en la mayoría pero algunas versiones no son soportadas por Oracle como Ubuntu y otras más), Mac (en ciertas versiones) y creo que serian las mas importantes por el momento.<br />
</span></p>
<p><span style="font-family:Verdana;font-size:14pt;"><strong>Donde encuentro PL/SQL<br />
</strong></span></p>
<p><span style="font-family:Verdana;">Aunque la programación y ejecución de PL/SQL normalmente se realiza dentro de la base de datos también se puede ejecutar en otras aplicaciones (de Oracle) sin necesidad de tener una base de datos, como por ejemplo: <em>Forms</em>…y creo que nada mas </span><span style="font-family:Wingdings;">J</span><span style="font-family:Verdana;"> o tal vez en APEX que es una aplicación Web.<br />
</span></p>
<p style="background:#dbe5f1 none repeat scroll 0 50%;margin-left:36pt;">NOTA : Aunque suene redundante PL/SQL es una tecnología de Oracle y únicamente se encuentra en sus productos, esto quiere decir que no se puede desarrollar PL/SQL en C o Java, aunque se pueden enviar sentencia PL/SQL por medio de ODBC,JDBC,etc a la base de datos para que sean ejecutadas dentro de la misma.</p>
<p><span style="font-family:Verdana;font-size:14pt;"><strong>Versiones de PL/SQL<br />
</strong></span></p>
<p><span style="font-family:Verdana;">Bueno como había comentado, la versión 1.0 inicio con Oracle 6.0, actualmente esta la versión 10.2 de PL/SQL con Oracle 10g (10.2) y este año(2007) esta prevista una nueva versión de la base de datos 11g así que debe existir una nueva versión de PL/SQL mejorada.<br />
</span></p>
<p><span style="font-family:Verdana;">Bueno es todo por el capitulo de hoy, así que hasta la próxima. Intentaré publicar un capitulo cada semana, pero no lo aseguro. </span><span style="font-family:Wingdings;">J</span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/plsqlenespanol.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/plsqlenespanol.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/plsqlenespanol.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/plsqlenespanol.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/plsqlenespanol.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/plsqlenespanol.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/plsqlenespanol.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/plsqlenespanol.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/plsqlenespanol.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/plsqlenespanol.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/plsqlenespanol.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/plsqlenespanol.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/plsqlenespanol.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/plsqlenespanol.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/plsqlenespanol.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/plsqlenespanol.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=plsqlenespanol.wordpress.com&amp;blog=1247465&amp;post=4&amp;subd=plsqlenespanol&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://plsqlenespanol.wordpress.com/2007/06/16/un-poco-de-historia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50106265fba48b97bf8fc584ac06f3ee?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">delfinonunez</media:title>
		</media:content>
	</item>
		<item>
		<title>Hello world!</title>
		<link>http://plsqlenespanol.wordpress.com/2007/06/16/hello-world/</link>
		<comments>http://plsqlenespanol.wordpress.com/2007/06/16/hello-world/#comments</comments>
		<pubDate>Sat, 16 Jun 2007 19:58:20 +0000</pubDate>
		<dc:creator>delfinonunez</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Esta es mi primer publicación sobre PL/SQL mi intención es hacer un pequeño curso de Oracle PL/SQL en español, espero poder lograrlo, darle seguimiento y ponerlo en una secuencia lógica. Bueno, comenzamos&#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=plsqlenespanol.wordpress.com&amp;blog=1247465&amp;post=1&amp;subd=plsqlenespanol&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Esta es mi primer publicación sobre PL/SQL mi intención es hacer un pequeño curso de Oracle PL/SQL en español, espero poder lograrlo, darle seguimiento y ponerlo en una secuencia lógica.</p>
<p>Bueno, comenzamos&#8230;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/plsqlenespanol.wordpress.com/1/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/plsqlenespanol.wordpress.com/1/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/plsqlenespanol.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/plsqlenespanol.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/plsqlenespanol.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/plsqlenespanol.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/plsqlenespanol.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/plsqlenespanol.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/plsqlenespanol.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/plsqlenespanol.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/plsqlenespanol.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/plsqlenespanol.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/plsqlenespanol.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/plsqlenespanol.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/plsqlenespanol.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/plsqlenespanol.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=plsqlenespanol.wordpress.com&amp;blog=1247465&amp;post=1&amp;subd=plsqlenespanol&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://plsqlenespanol.wordpress.com/2007/06/16/hello-world/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50106265fba48b97bf8fc584ac06f3ee?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">delfinonunez</media:title>
		</media:content>
	</item>
	</channel>
</rss>
