<?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:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>Templarios de San Oracle &#187; Oracle PL/SQL</title>
	<atom:link href="http://www.tsoracle.com/wparchives/category/oracle-plsql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tsoracle.com</link>
	<description>Diario de un Templario de San Oracle</description>
	<lastBuildDate>Sat, 28 Jan 2012 12:55:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
		<item>
		<title>Campos null con precisi&#243;n en vistas</title>
		<link>http://www.tsoracle.com/wparchives/2008/01/25/campos-null-con-precisin-en-vistas/</link>
		<comments>http://www.tsoracle.com/wparchives/2008/01/25/campos-null-con-precisin-en-vistas/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 13:38:30 +0000</pubDate>
		<dc:creator>Ragnar</dc:creator>
				<category><![CDATA[Oracle PL/SQL]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[cast]]></category>
		<category><![CDATA[funcion]]></category>
		<category><![CDATA[procedimiento]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.tsoracle.com/wparchives/2008/01/25/campos-null-con-precisin-en-vistas/</guid>
		<description><![CDATA[Muchas veces he necesitado crear una vista para sustituir una antigua tabla. En ocasiones he tenido que mantener en la vista una columna que ya no existe pero que debo dejar por alg&#250;n motivo. Lo que hago es definir la columna como &#8220;Funci&#243;n(NULL) AS NOMBRE_COLUMNA&#8221;. Si es VARCHAR2 pongo directamente NULL. Si quiero que sea [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas veces he necesitado crear una vista para sustituir una antigua tabla. En ocasiones he tenido que mantener en la vista una columna que ya no existe pero que debo dejar por alg&uacute;n motivo. Lo que hago es definir la columna como <em>&#8220;Funci&oacute;n(NULL) AS NOMBRE_COLUMNA&#8221;</em>. Si es VARCHAR2 pongo directamente NULL. Si quiero que sea un number <em>TO_NUMBER(NULL)</em> y si es una fecha <em>TO_DATE(NULL)</em>. Por ejemplo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="plsql" style="font-family:monospace;"><span style="color: #00F;">CREATE</span> <span style="color: #00F;">OR</span> <span style="color: #000;">REPLACE</span> <span style="color: #00F;">VIEW</span> CAMPOS_NULOS <span style="color: #00F;">AS</span><span style="color: #00F;">&#40;</span>
  <span style="color: #00F;">SELECT</span> <span style="color: #00F;">NULL</span>              <span style="color: #00F;">AS</span> CADENA_VACIA<span style="color: #00F;">,</span>
         <span style="color: #000;">TO_NUMBER</span><span style="color: #00F;">&#40;</span> <span style="color: #00F;">NULL</span> <span style="color: #00F;">&#41;</span> <span style="color: #00F;">AS</span> NUMERO_VACIO<span style="color: #00F;">,</span>
         <span style="color: #000;">TO_DATE</span><span style="color: #00F;">&#40;</span> <span style="color: #00F;">NULL</span> <span style="color: #00F;">&#41;</span>   <span style="color: #00F;">AS</span> FECHA_VACIA
  <span style="color: #00F;">FROM</span> DUAL <span style="color: #00F;">&#41;</span>
<span style="color: #00F;">/</span></pre></td></tr></table></div>

<p>Si hacemos un desc:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">SQL&gt; DESC CAMPOS_NULOS
 Nombre        ¿Nulo?   Tipo
 ------------- -------- ----------------------------
 CADENA_VACIA           VARCHAR2
 NUMERO_VACIO           NUMBER
 FECHA_VACIA            DATE</pre></div></div>

<p>El &uacute;nico problema, como puede verse en el ejemplo, es que perd&iacute;a la precisi&oacute;n. <span id="more-93"></span>A ra&iacute;z de una <a href="http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:22032216531459" title="Ask Tom: Creating Materialized Views" target="_blank">respuesta del semidiox Tom</a> he conocido el milagroso <em>CAST</em>. Se le puede poner precisi&oacute;n y tipo a la columa haciendo un <em>&#8220;CAST( NULL AS TIPO(PRECISION) )&#8221;</em>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="plsql" style="font-family:monospace;"><span style="color: #00F;">CREATE</span> <span style="color: #00F;">OR</span> <span style="color: #000;">REPLACE</span> <span style="color: #00F;">VIEW</span> CAMPOS_NULOS <span style="color: #00F;">AS</span><span style="color: #00F;">&#40;</span>
  <span style="color: #00F;">SELECT</span> <span style="color: #000;">CAST</span><span style="color: #00F;">&#40;</span> <span style="color: #00F;">NULL</span> <span style="color: #00F;">AS</span> <span style="color: #00F;">VARCHAR2</span><span style="color: #00F;">&#40;</span><span style="color: #800;">20</span><span style="color: #00F;">&#41;</span> <span style="color: #00F;">&#41;</span> <span style="color: #00F;">AS</span> CADENA_VACIA<span style="color: #00F;">,</span>
         <span style="color: #000;">CAST</span><span style="color: #00F;">&#40;</span> <span style="color: #00F;">NULL</span> <span style="color: #00F;">AS</span> <span style="color: #00F;">NUMBER</span><span style="color: #00F;">&#40;</span><span style="color: #800;">4</span><span style="color: #00F;">&#41;</span> <span style="color: #00F;">&#41;</span>    <span style="color: #00F;">AS</span> NUMERO_VACIO<span style="color: #00F;">,</span>
         <span style="color: #000;">CAST</span><span style="color: #00F;">&#40;</span> <span style="color: #00F;">NULL</span> <span style="color: #00F;">AS</span> <span style="color: #00F;">DATE</span> <span style="color: #00F;">&#41;</span>         <span style="color: #00F;">AS</span> FECHA_VACIA
  <span style="color: #00F;">FROM</span> DUAL <span style="color: #00F;">&#41;</span>
<span style="color: #00F;">/</span></pre></td></tr></table></div>

<p>Y haciendo un desc tenemos que:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">SQL&gt; DESC CAMPOS_NULOS
 Nombre        ¿Nulo?   Tipo
 ------------- -------- ----------------------------
 CADENA_VACIA           VARCHAR2(20)
 NUMERO_VACIO           NUMBER(4)
 FECHA_VACIA            DATE</pre></div></div>

<p>En la <a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions016.htm" target="_blank" title="CAST Syntax">Documentaci&oacute;n oficial</a> se explica la manera de uso y m&aacute;s ejemplos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoracle.com/wparchives/2008/01/25/campos-null-con-precisin-en-vistas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Uso de deterministic</title>
		<link>http://www.tsoracle.com/wparchives/2007/08/25/uso-de-deterministic/</link>
		<comments>http://www.tsoracle.com/wparchives/2007/08/25/uso-de-deterministic/#comments</comments>
		<pubDate>Sat, 25 Aug 2007 07:23:03 +0000</pubDate>
		<dc:creator>Ragnar</dc:creator>
				<category><![CDATA[Oracle PL/SQL]]></category>

		<guid isPermaLink="false">http://www.tsoracle.com/wparchives/2007/08/25/uso-de-deterministic/</guid>
		<description><![CDATA[Cuando sabemos que dados unos par&#225;metros una funci&#243;n devolver&#225; siempre lo mismo deber&#237;amos utilizar la expresi&#243;n DETERMINISTC. Este hint le va a permitir al optimizador de Oracle evitar hacer llamadas redundantes a la funci&#243;n. S&#243;lo se puede garantizar que una funci&#243;n devolver&#225; lo mismo dados unos par&#225;metros cuando no dependa de variables de sesi&#243;n (como [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando sabemos que dados unos par&aacute;metros una funci&oacute;n devolver&aacute; <strong>siempre</strong> lo mismo deber&iacute;amos utilizar la expresi&oacute;n <em>DETERMINISTC</em>. Este hint le va a permitir al optimizador de Oracle evitar hacer llamadas redundantes a la funci&oacute;n. S&oacute;lo se puede garantizar que una funci&oacute;n devolver&aacute; lo mismo dados unos par&aacute;metros cuando no dependa de variables de sesi&oacute;n (como sysdate) y otros objetos de la base de datos (llamadas a funciones no deterministic o consultas). El caso m&aacute;s simple y m&aacute;s com&uacute;n es una funci&oacute;n que devuelva el valor de una constante. Tambi&eacute;n son comunes funciones de operaciones aritm&eacute;ticas o de concatenaci&oacute;n.<br />
<span id="more-68"></span><br />
En este ejemplo podemos ver dos funciones <em>DETERMINISTC</em> y otra que no lo puede ser:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
</pre></td><td class="code"><pre class="plsql" style="font-family:monospace;"><span style="color: #080; font-style: italic;">-- Especificación</span>
<span style="color: #00F;">CREATE</span> <span style="color: #00F;">OR</span> <span style="color: #000;">REPLACE</span> <span style="color: #00F;">PACKAGE</span> PPRUEBA <span style="color: #00F;">IS</span> 
  <span style="color: #00F;">FUNCTION</span> vValorCte <span style="color: #00F;">RETURN</span> <span style="color: #00F;">VARCHAR2</span> DETERMINISTIC<span style="color: #00F;">;</span>
    <span style="color: #00F;">PRAGMA</span> RESTRICT_REFERENCES<span style="color: #00F;">&#40;</span> vValorCte<span style="color: #00F;">,</span> RNDS<span style="color: #00F;">,</span> RNPS<span style="color: #00F;">,</span> WNDS<span style="color: #00F;">,</span> WNPS <span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
    <span style="color: #080; font-style: italic;">-- Función que devuelve el valor de la constante VCONSTANTE</span>
&nbsp;
  <span style="color: #00F;">FUNCTION</span> nSuma<span style="color: #00F;">&#40;</span> nValorA <span style="color: #00F;">NUMBER</span><span style="color: #00F;">,</span> nValorB <span style="color: #00F;">NUMBER</span> <span style="color: #00F;">&#41;</span> 
  <span style="color: #00F;">RETURN</span> <span style="color: #00F;">NUMBER</span> DETERMINISTIC<span style="color: #00F;">;</span>
    <span style="color: #00F;">PRAGMA</span> RESTRICT_REFERENCES<span style="color: #00F;">&#40;</span> nSuma<span style="color: #00F;">,</span> RNDS<span style="color: #00F;">,</span> RNPS<span style="color: #00F;">,</span> WNDS<span style="color: #00F;">,</span> WNPS <span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
    <span style="color: #080; font-style: italic;">-- Función que devuelve la suma de los dos valores que le pasan </span>
    <span style="color: #080; font-style: italic;">-- como parámetro.</span>
&nbsp;
  <span style="color: #00F;">FUNCTION</span> nSumaNoDeterminante<span style="color: #00F;">&#40;</span> nValorA <span style="color: #00F;">NUMBER</span><span style="color: #00F;">,</span> nValorB <span style="color: #00F;">NUMBER</span> <span style="color: #00F;">&#41;</span> 
  <span style="color: #00F;">RETURN</span> <span style="color: #00F;">NUMBER</span><span style="color: #00F;">;</span>
    <span style="color: #00F;">PRAGMA</span> RESTRICT_REFERENCES<span style="color: #00F;">&#40;</span> nSumaNoDeterminante<span style="color: #00F;">,</span> 
                                RNPS<span style="color: #00F;">,</span> WNDS<span style="color: #00F;">,</span> WNPS <span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
    <span style="color: #080; font-style: italic;">-- Función que devuelve la suma de los dos valores que le pasan </span>
    <span style="color: #080; font-style: italic;">-- como parámetro. Como hace una select de dual no puede hacerse</span>
    <span style="color: #080; font-style: italic;">-- deterministic</span>
<span style="color: #00F;">END</span><span style="color: #00F;">;</span>
<span style="color: #00F;">/</span>
SHOW ERRORS
&nbsp;
<span style="color: #080; font-style: italic;">-- Cuerpo</span>
<span style="color: #00F;">CREATE</span> <span style="color: #00F;">OR</span> <span style="color: #000;">REPLACE</span> <span style="color: #00F;">PACKAGE</span> <span style="color: #00F;">BODY</span> PPRUEBA <span style="color: #00F;">IS</span> 
  <span style="color: #080; font-style: italic;">-------------</span>
  <span style="color: #080; font-style: italic;">-- Constantes</span>
  <span style="color: #080; font-style: italic;">-------------</span>
  VCONSTANTE <span style="color: #00F;">CONSTANT</span> <span style="color: #00F;">VARCHAR2</span><span style="color: #00F;">&#40;</span><span style="color: #800;">6</span><span style="color: #00F;">&#41;</span> <span style="color: #00F;">:=</span> <span style="color: #F00;">'PRUEBA'</span><span style="color: #00F;">;</span>
&nbsp;
  <span style="color: #00F;">FUNCTION</span> vValorCte <span style="color: #00F;">RETURN</span> <span style="color: #00F;">VARCHAR2</span> DETERMINISTIC <span style="color: #00F;">IS</span> 
    <span style="color: #080; font-style: italic;">-- Función que devuelve el valor de la constante VCONSTANTE</span>
  <span style="color: #00F;">BEGIN</span> 
    <span style="color: #00F;">RETURN</span> VCONSTANTE<span style="color: #00F;">;</span>
  <span style="color: #00F;">END</span> vValorCte<span style="color: #00F;">;</span>
&nbsp;
  <span style="color: #00F;">FUNCTION</span> nSuma<span style="color: #00F;">&#40;</span> nValorA <span style="color: #00F;">NUMBER</span><span style="color: #00F;">,</span> nValorB <span style="color: #00F;">NUMBER</span> <span style="color: #00F;">&#41;</span> 
  <span style="color: #00F;">RETURN</span> <span style="color: #00F;">NUMBER</span> DETERMINISTIC <span style="color: #00F;">IS</span> 
    <span style="color: #080; font-style: italic;">-- Función que devuelve la suma de los dos valores que le pasan </span>
    <span style="color: #080; font-style: italic;">-- como parámetro.</span>
  <span style="color: #00F;">BEGIN</span> 
    <span style="color: #00F;">RETURN</span> nValorA <span style="color: #00F;">+</span> nValorB<span style="color: #00F;">;</span>
  <span style="color: #00F;">END</span> nSuma<span style="color: #00F;">;</span>
&nbsp;
  <span style="color: #00F;">FUNCTION</span> nSumaNoDeterminante<span style="color: #00F;">&#40;</span> nValorA <span style="color: #00F;">NUMBER</span><span style="color: #00F;">,</span> nValorB <span style="color: #00F;">NUMBER</span> <span style="color: #00F;">&#41;</span> 
  <span style="color: #00F;">RETURN</span> <span style="color: #00F;">NUMBER</span> <span style="color: #00F;">IS</span> 
    <span style="color: #080; font-style: italic;">-- Función que devuelve la suma de los dos valores que le pasan </span>
    <span style="color: #080; font-style: italic;">-- como parámetro. Como hace una select de dual no puede hacerse</span>
    <span style="color: #080; font-style: italic;">-- deterministic</span>
    <span style="color: #080; font-style: italic;">------------</span>
    <span style="color: #080; font-style: italic;">-- Variables</span>
    <span style="color: #080; font-style: italic;">------------</span>
    nSumaTotal <span style="color: #00F;">NUMBER</span><span style="color: #00F;">;</span>
  <span style="color: #00F;">BEGIN</span> 
    <span style="color: #00F;">SELECT</span> nValorA <span style="color: #00F;">+</span> nValorB
    <span style="color: #00F;">INTO</span>   nSumaTotal
    <span style="color: #00F;">FROM</span>   DUAL<span style="color: #00F;">;</span>
&nbsp;
    <span style="color: #00F;">RETURN</span> nSumaTotal<span style="color: #00F;">;</span>
  <span style="color: #00F;">END</span> nSumaNoDeterminante<span style="color: #00F;">;</span>
<span style="color: #00F;">END</span><span style="color: #00F;">;</span>
<span style="color: #00F;">/</span>
SHOW ERRORS</pre></td></tr></table></div>

<p>Esto hace que sea muy aconsejable utilizar el hint siempre que sea posible, sobre todo si pensamos utilizar la funci&oacute;n en alguna select. Tambi&eacute;n es requisito para poder hacer un &iacute;ndice sobre una funci&oacute;n.<br />
La definici&oacute;n con propiedad puede verse en la documentaci&oacute;n oficial: <a href="http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96624/08_subs.htm" target="_blank" title="PL/SQL Subprograms">PL/SQL Subprograms</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoracle.com/wparchives/2007/08/25/uso-de-deterministic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Uso de expresiones regulares con Oracle</title>
		<link>http://www.tsoracle.com/wparchives/2007/08/24/uso-de-expresiones-regulares-con-oracle/</link>
		<comments>http://www.tsoracle.com/wparchives/2007/08/24/uso-de-expresiones-regulares-con-oracle/#comments</comments>
		<pubDate>Fri, 24 Aug 2007 15:27:10 +0000</pubDate>
		<dc:creator>Ragnar</dc:creator>
				<category><![CDATA[Oracle PL/SQL]]></category>
		<category><![CDATA[Scripts]]></category>

		<guid isPermaLink="false">http://www.tsoracle.com/wparchives/2007/08/24/uso-de-expresiones-regulares-con-oracle/</guid>
		<description><![CDATA[Muchas veces necesito saber qu&#233; registros de una tabla tienen valores no num&#233;ricos en un campo varchar. Normalmente me hago una funci&#243;n en un paquete y la utilizo en la select que toque: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 FUNCTION esCadenaNumerica&#40; vCadena VARCHAR2 &#41; RETURN VARCHAR2 [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas veces necesito saber qu&eacute; registros de una tabla tienen valores no num&eacute;ricos en un campo varchar. Normalmente me hago una funci&oacute;n en un paquete y la utilizo en la select que toque:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="plsql" style="font-family:monospace;"><span style="color: #00F;">FUNCTION</span> esCadenaNumerica<span style="color: #00F;">&#40;</span> vCadena <span style="color: #00F;">VARCHAR2</span> <span style="color: #00F;">&#41;</span> <span style="color: #00F;">RETURN</span> <span style="color: #00F;">VARCHAR2</span> <span style="color: #00F;">IS</span> 
  <span style="color: #080; font-style: italic;">------------</span>
  <span style="color: #080; font-style: italic;">-- Variables</span>
  <span style="color: #080; font-style: italic;">------------</span>
  nTonta <span style="color: #00F;">NUMBER</span><span style="color: #00F;">;</span>
<span style="color: #00F;">BEGIN</span> 
  nTonta <span style="color: #00F;">:=</span> <span style="color: #000;">TO_NUMBER</span><span style="color: #00F;">&#40;</span> vCadena <span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
&nbsp;
  <span style="color: #080; font-style: italic;">-- Si llego hasta aquí es que el número es válido.</span>
  <span style="color: #00F;">RETURN</span> <span style="color: #F00;">'TRUE'</span><span style="color: #00F;">;</span>
<span style="color: #00F;">EXCEPTION</span>
  <span style="color: #00F;">WHEN</span> <span style="color: #F00;">VALUE_ERROR</span> <span style="color: #00F;">THEN</span>
    <span style="color: #080; font-style: italic;">-- El número no es válido.</span>
    <span style="color: #00F;">RETURN</span> <span style="color: #F00;">'FALSE'</span><span style="color: #00F;">;</span>
<span style="color: #00F;">END</span><span style="color: #00F;">;</span></pre></td></tr></table></div>

<p><span id="more-67"></span><br />
La funci&oacute;n devuelve un varchar para poder ser usada en una select. Esta select me dar&iacute;a los valores no num&eacute;ricos de una columna:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> VVALOR
<span style="color: #993333; font-weight: bold;">FROM</span>   TABLA
<span style="color: #993333; font-weight: bold;">WHERE</span>  NombrePaquete<span style="color: #66cc66;">.</span>esCadenaNumerica<span style="color: #66cc66;">&#40;</span> VVALOR <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'FALSE'</span></pre></td></tr></table></div>

<p>Por supuesto, la funci&oacute;n podr&iacute;a ser m&aacute;s rica agreg&aacute;ndole par&aacute;metros para una m&aacute;scara de conversi&oacute;n o para pedir tambi&eacute;n la precisi&oacute;n.<br />
El caso es que me ha hecho falta buscar valores no num&eacute;ricos en una tabla en un esquema en el que no tengo permiso para crear ni funciones ni procedimientos. Podr&iacute;a haber optado por hacer un bloque de pl/sql an&oacute;nimo, pero he preferido buscar algo m&aacute;s directo y lo he encontrado. Las <em><a href="http://www.amk.ca/python/howto/regex/" target="_blank" title="Regular Expression HOWTO">expresiones regulares</a></em> est&aacute;n disponibles en la 10g y permiten hacer b&uacute;squedas de una manera parecida al like pero m&aacute;s potente. Es algo bastante m&aacute;s com&uacute;n en el mundo java pero tambi&eacute;n est&aacute; disponible para los <em>plsqleros</em> a trav&eacute;s de la funci&oacute;n <em>REGEXP_LIKE</em>. Est&aacute; bien explicado en este art&iacute;culo que he encontrado: <a href="http://www.databasejournal.com/features/oracle/article.php/3501826" target="_blank" title="Oracle and Regular Expressions">Oracle and Regular Expressions</a>.<br />
Por ejemplo, esta select me saca los valores de una columna que no son n&uacute;meros enteros:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> VVALOR
<span style="color: #993333; font-weight: bold;">FROM</span>   TABLA
<span style="color: #993333; font-weight: bold;">WHERE</span>  REGEXP_LIKE<span style="color: #66cc66;">&#40;</span> VVALOR<span style="color: #66cc66;">,</span> <span style="color: #ff0000;">'[^0-9]'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">/</span></pre></td></tr></table></div>

<p>Además de permitir búsquedas, también se pueden hacer potentes <em>replaces</em> y <em>substrs</em>. Flipante. Este es un enlace en plan tip donde el autor se ha currado unas inserciones y un montón de sentencias de prueba: <a href="http://www.psoug.org/reference/regexp.html" target="_blank" title="Oracle Regular Expressions, version 10.2">Oracle Regular Expressions, versi&oacute;n 10.2</a>. En la wikipedia, como de costumbre, también está bien explicado: <a href="http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular" target="_blank" title="Definici&oacute;n de expresi&oacute;n regular en la Wikipedia">Definici&oacute;n de expresi&oacute;n regular</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoracle.com/wparchives/2007/08/24/uso-de-expresiones-regulares-con-oracle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Sintaxis de TO_NUMBER</title>
		<link>http://www.tsoracle.com/wparchives/2007/07/22/sintaxis-de-to_number/</link>
		<comments>http://www.tsoracle.com/wparchives/2007/07/22/sintaxis-de-to_number/#comments</comments>
		<pubDate>Sun, 22 Jul 2007 15:57:37 +0000</pubDate>
		<dc:creator>Ragnar</dc:creator>
				<category><![CDATA[Oracle PL/SQL]]></category>

		<guid isPermaLink="false">http://www.tsoracle.com/wparchives/2007/07/22/sintaxis-de-to_number/</guid>
		<description><![CDATA[Nunca he llegado a memorizar la manera de hacer un TO_NUMBER cuando es necesario pasarle un formato. S&#243;lo suelo tener que hacerlo cuando estoy parseando datos de alguna manera. Una carga de loader o algo as&#237;. El caso es que siempre pierdo un tiempo precioso buscando la documentaci&#243;n. Por si a alguien le pasa lo [...]]]></description>
			<content:encoded><![CDATA[<p>Nunca he llegado a memorizar la manera de hacer un <em>TO_NUMBER</em> cuando es necesario pasarle un formato. S&oacute;lo suelo tener que hacerlo cuando estoy parseando datos de alguna manera. Una carga de loader o algo as&iacute;. El caso es que siempre pierdo un tiempo precioso buscando la documentaci&oacute;n. Por si a alguien le pasa lo mismo, aqu&iacute; est&aacute; el enlace: <a href="http://download.oracle.com/docs/cd/B10501_01/server.920/a96540/functions145a.htm" target="_blank" title="TO_NUMBER">Syntax &#8211; TO_NUMBER</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoracle.com/wparchives/2007/07/22/sintaxis-de-to_number/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Descripci&#243;n de tablas</title>
		<link>http://www.tsoracle.com/wparchives/2004/05/09/descripcin-de-tablas/</link>
		<comments>http://www.tsoracle.com/wparchives/2004/05/09/descripcin-de-tablas/#comments</comments>
		<pubDate>Mon, 10 May 2004 02:10:47 +0000</pubDate>
		<dc:creator>Ragnar</dc:creator>
				<category><![CDATA[Oracle PL/SQL]]></category>

		<guid isPermaLink="false">http://www.tsoracle.com/?p=9</guid>
		<description><![CDATA[Una de las cosas que suelo necesitar ver de una tabla es, a parte de sus comentarios, las tablas a donde apuntan sus claves for&#225;neas. Y tambi&#233;n cual es la clave primaria. Este script permite ver todo eso.]]></description>
			<content:encoded><![CDATA[<p>Una de las cosas que suelo necesitar ver de una tabla es, a parte de sus comentarios, las tablas a donde apuntan sus claves foráneas. Y también cual es la clave primaria. Este script permite ver todo eso. Usa vistas <em>user_, </em>pero es fácilmente modificable para utilizar vistas <em>all_. </em>Habrá que pedir entonces también como parámetro el propietario del objeto.<br />
Como veréis, a la izquierda de la clave primaria aparece un asterisco. Después de la lista de columnas hay una sección para las claves foráneas donde se detalla la tabla a la que hace referencia y las columnas de la tabla que estamos describiendo que están involucradas en la clave ajena.<br />
<span id="more-9"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
</pre></td><td class="code"><pre class="plsql" style="font-family:monospace;"><span style="color: #080; font-style: italic;">--------------</span>
<span style="color: #080; font-style: italic;">-- Sección Set</span>
<span style="color: #080; font-style: italic;">--------------</span>
<span style="color: #00F;">SET</span> LINES  <span style="color: #800;">100</span>
<span style="color: #00F;">SET</span> HEADING <span style="color: #00F;">ON</span>
<span style="color: #00F;">SET</span> VERIFY OFF
<span style="color: #080; font-style: italic;">-------------------------</span>
<span style="color: #080; font-style: italic;">-- Definición de columnas</span>
<span style="color: #080; font-style: italic;">-------------------------</span>
COLUMN CLAVE_PRIMARIA FORMAT A1
COLUMN COLUMN_NAME    FORMAT A20
COLUMN TIPO           FORMAT A15
COLUMN DEFECTO        FORMAT A15
COLUMN COMENTARIO     FORMAT A43
COLUMN COMMENTS       FORMAT A69
COLUMN TABLA_FORANEA  FORMAT A20
&nbsp;
<span style="color: #080; font-style: italic;">-------------</span>
<span style="color: #080; font-style: italic;">-- Parámetros</span>
<span style="color: #080; font-style: italic;">-------------</span>
ACCEPT tabla PROMPT <span style="color: #F00;">&quot;Escribe el nombre de la tabla: &quot;</span>
PROMPT <span style="color: #00F;">.</span>
<span style="color: #080; font-style: italic;">----------</span>
<span style="color: #080; font-style: italic;">-- Selects</span>
<span style="color: #080; font-style: italic;">----------</span>
PROMPT TABLA
<span style="color: #00F;">SELECT</span> TABLE_NAME<span style="color: #00F;">,</span> COMMENTS
<span style="color: #00F;">FROM</span>   USER_TAB_COMMENTS
<span style="color: #00F;">WHERE</span>  TABLE_NAME <span style="color: #00F;">=</span> <span style="color: #000;">UPPER</span><span style="color: #00F;">&#40;</span> <span style="color: #F00;">'&amp;&amp;tabla'</span> <span style="color: #00F;">&#41;</span>
<span style="color: #00F;">/</span>
<span style="color: #00F;">SELECT</span> P<span style="color: #00F;">.</span>PK CLAVE_PRIMARIA<span style="color: #00F;">,</span>
       M<span style="color: #00F;">.</span>COLUMN_NAME<span style="color: #00F;">,</span> 
       M<span style="color: #00F;">.</span>DATA_TYPE <span style="color: #00F;">||</span> <span style="color: #000;">DECODE</span><span style="color: #00F;">&#40;</span> M<span style="color: #00F;">.</span>DATA_TYPE<span style="color: #00F;">,</span> 
                              <span style="color: #080; font-style: italic;">/*************************************/</span>
                              <span style="color: #F00;">'DATE'</span><span style="color: #00F;">,</span> <span style="color: #00F;">NULL</span><span style="color: #00F;">,</span> <span style="color: #080; font-style: italic;">-- Poner aquí los tipos</span>
                              <span style="color: #F00;">'LONG'</span><span style="color: #00F;">,</span> <span style="color: #00F;">NULL</span><span style="color: #00F;">,</span> <span style="color: #080; font-style: italic;">-- de varible para los </span>
                              <span style="color: #F00;">'BLOB'</span><span style="color: #00F;">,</span> <span style="color: #00F;">NULL</span><span style="color: #00F;">,</span> <span style="color: #080; font-style: italic;">-- que no queramos ver</span>
                              <span style="color: #F00;">'CLOB'</span><span style="color: #00F;">,</span> <span style="color: #00F;">NULL</span><span style="color: #00F;">,</span> <span style="color: #080; font-style: italic;">-- la precisión</span>
                              <span style="color: #080; font-style: italic;">/*************************************/</span>
                              <span style="color: #F00;">'('</span> <span style="color: #00F;">||</span> <span style="color: #000;">TO_CHAR</span><span style="color: #00F;">&#40;</span> <span style="color: #000;">NVL</span><span style="color: #00F;">&#40;</span> M<span style="color: #00F;">.</span>DATA_PRECISION<span style="color: #00F;">,</span> 
                                                   M<span style="color: #00F;">.</span>DATA_LENGTH<span style="color: #00F;">&#41;</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">||</span>
                              <span style="color: #000;">DECODE</span><span style="color: #00F;">&#40;</span> M<span style="color: #00F;">.</span>DATA_SCALE<span style="color: #00F;">,</span> <span style="color: #00F;">NULL</span><span style="color: #00F;">,</span> <span style="color: #00F;">NULL</span><span style="color: #00F;">,</span> 
                                      <span style="color: #F00;">','</span> <span style="color: #00F;">||</span>
                                      <span style="color: #000;">TO_CHAR</span><span style="color: #00F;">&#40;</span> M<span style="color: #00F;">.</span>DATA_SCALE <span style="color: #00F;">&#41;</span> <span style="color: #00F;">&#41;</span> <span style="color: #00F;">||</span>
                              <span style="color: #F00;">')'</span> <span style="color: #00F;">&#41;</span> TIPO<span style="color: #00F;">,</span>
       M<span style="color: #00F;">.</span>NULLABLE<span style="color: #00F;">,</span>
       M<span style="color: #00F;">.</span>DATA_DEFAULT DEFECTO<span style="color: #00F;">,</span>
       C<span style="color: #00F;">.</span>COMMENTS COMENTARIO
<span style="color: #00F;">FROM</span>   <span style="color: #00F;">&#40;</span> <span style="color: #00F;">SELECT</span> N<span style="color: #00F;">.</span>TABLE_NAME<span style="color: #00F;">,</span> L<span style="color: #00F;">.</span>COLUMN_NAME<span style="color: #00F;">,</span> <span style="color: #F00;">'*'</span> PK
         <span style="color: #00F;">FROM</span>   USER_CONS_COLUMNS L<span style="color: #00F;">,</span> USER_CONSTRAINTS N
         <span style="color: #00F;">WHERE</span>  L<span style="color: #00F;">.</span>CONSTRAINT_NAME <span style="color: #00F;">=</span> N<span style="color: #00F;">.</span>CONSTRAINT_NAME
           <span style="color: #00F;">AND</span>  N<span style="color: #00F;">.</span>TABLE_NAME <span style="color: #00F;">=</span> <span style="color: #000;">UPPER</span><span style="color: #00F;">&#40;</span> <span style="color: #F00;">'&amp;&amp;tabla'</span> <span style="color: #00F;">&#41;</span>
           <span style="color: #00F;">AND</span>  N<span style="color: #00F;">.</span>CONSTRAINT_TYPE <span style="color: #00F;">=</span> <span style="color: #F00;">'P'</span> <span style="color: #00F;">&#41;</span> P<span style="color: #00F;">,</span> <span style="color: #080; font-style: italic;">-- Clave primaria</span>
       USER_TAB_COLUMNS M<span style="color: #00F;">,</span> USER_COL_COMMENTS C
<span style="color: #00F;">WHERE</span>  M<span style="color: #00F;">.</span>TABLE_NAME  <span style="color: #00F;">=</span> C<span style="color: #00F;">.</span>TABLE_NAME
  <span style="color: #00F;">AND</span>  M<span style="color: #00F;">.</span>COLUMN_NAME <span style="color: #00F;">=</span> C<span style="color: #00F;">.</span>COLUMN_NAME
  <span style="color: #00F;">AND</span>  M<span style="color: #00F;">.</span>TABLE_NAME  <span style="color: #00F;">=</span> P<span style="color: #00F;">.</span>TABLE_NAME  <span style="color: #00F;">&#40;</span><span style="color: #00F;">+</span><span style="color: #00F;">&#41;</span>
  <span style="color: #00F;">AND</span>  M<span style="color: #00F;">.</span>COLUMN_NAME <span style="color: #00F;">=</span> P<span style="color: #00F;">.</span>COLUMN_NAME <span style="color: #00F;">&#40;</span><span style="color: #00F;">+</span><span style="color: #00F;">&#41;</span>
  <span style="color: #00F;">AND</span>  M<span style="color: #00F;">.</span>TABLE_NAME  <span style="color: #00F;">=</span> <span style="color: #000;">UPPER</span><span style="color: #00F;">&#40;</span> <span style="color: #F00;">'&amp;&amp;tabla'</span> <span style="color: #00F;">&#41;</span>
<span style="color: #00F;">ORDER</span> <span style="color: #00F;">BY</span> M<span style="color: #00F;">.</span>COLUMN_ID
<span style="color: #00F;">/</span>
PROMPT CLAVE <span style="color: #00F;">FOR</span>ÁNEA
&nbsp;
BREAK <span style="color: #00F;">ON</span> TABLA_FORANEA
<span style="color: #00F;">SELECT</span> A<span style="color: #00F;">.</span>CONSTRAINT_NAME<span style="color: #00F;">,</span> B<span style="color: #00F;">.</span>TABLE_NAME TABLA_FORANEA<span style="color: #00F;">,</span> C<span style="color: #00F;">.</span>COLUMN_NAME
<span style="color: #00F;">FROM</span>   USER_CONS_COLUMNS C<span style="color: #00F;">,</span> USER_CONSTRAINTS A<span style="color: #00F;">,</span> USER_CONSTRAINTS B
<span style="color: #00F;">WHERE</span>  A<span style="color: #00F;">.</span>R_CONSTRAINT_NAME <span style="color: #00F;">=</span> B<span style="color: #00F;">.</span>CONSTRAINT_NAME
  <span style="color: #00F;">AND</span>  A<span style="color: #00F;">.</span>CONSTRAINT_NAME   <span style="color: #00F;">=</span> C<span style="color: #00F;">.</span>CONSTRAINT_NAME
  <span style="color: #00F;">AND</span>  A<span style="color: #00F;">.</span>TABLE_NAME        <span style="color: #00F;">=</span> <span style="color: #000;">UPPER</span><span style="color: #00F;">&#40;</span> <span style="color: #F00;">'&amp;&amp;tabla'</span> <span style="color: #00F;">&#41;</span>
  <span style="color: #00F;">AND</span>  A<span style="color: #00F;">.</span>CONSTRAINT_TYPE   <span style="color: #00F;">=</span> <span style="color: #F00;">'R'</span>
<span style="color: #00F;">ORDER</span> <span style="color: #00F;">BY</span> A<span style="color: #00F;">.</span>CONSTRAINT_NAME<span style="color: #00F;">,</span> B<span style="color: #00F;">.</span>TABLE_NAME<span style="color: #00F;">,</span> C<span style="color: #00F;">.</span>POSITION
<span style="color: #00F;">/</span>
<span style="color: #00F;">SET</span> VERIFY <span style="color: #00F;">ON</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.tsoracle.com/wparchives/2004/05/09/descripcin-de-tablas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
	</item>
	</channel>
</rss>

