Oracle REST Data Service intro

Jeff Smith nos proporciona en esta entrada una breve introducción a ORDS (antiguo APEX Listener) y un repertorio con la documentación relacionada más importante: Oracle REST Data Services (ORDS) | ThatJeffSmith

Anuncios

Many SQL Performance Problems Stem from “Unnecessary, Mandatory Work”

Origen: Many SQL Performance Problems Stem from “Unnecessary, Mandatory Work”

Python para desarrolladores PL/SQL

Arup Nanda, Oracle ACE Director, ha publicado una serie de tutoriales para mostrar las diferencias y similitudes entre el desarrollo con Python y PL/SQL.

Estos tutoriales están disponibles en Introduction to Python for PL/SQL Developers – … | Oracle Community

Extraer valores de una lista contenida en una columna

En ciertas ocasiones nos vemos en la necesidad de almacenar una serie de valores distintos en una misma columna. Especialmente cuando estamos tratando con datos de configuración que pueden variar en el número y valores posibles con el tiempo. Explotar esta información desde SQL suele presentar muchos inconvenientes puesto que se trata de información sin normalizar y que requiere tratar con cadenas de texto de alta variabilidad.

Gracias a la implantación de expresiones regulares dentro de SQL podemos mejorar las alternativas a la hora de consultar este tipo de datos.

Tomemos, a modo de prueba, las siguientes cadenas de texto:

TYPE=String#LENGTH=18#DEFAULT=empty
LENGTH=1#TYPE=Number#DECIMALS=0#DEFAULT=0
LENGTH=10#DEFAULT=1.00#TYPE=Number#DECIMALS=2

Mediante el uso de las funciones “regexp_instr” y “regexp_substr” dentro de una consulta SELECT podemos extraer los distintos componentes de cada una de las cadenas y, por ejemplo, mostrarlos como columnas:

with test_tab as (
    select 1 cfg, 'TYPE=String#LENGTH=18#DEFAULT=empty' config from dual
    union all
    select 2 cfg, 'LENGTH=1#TYPE=Number#DECIMALS=0#DEFAULT=0' config from dual
    union all
    select 3 cfg, 'LENGTH=10#DEFAULT=1.00#TYPE=Number#DECIMALS=2' config from dual)
select cfg,
       decode((regexp_instr(config, '(^|#)TYPE=(.+)($|#)')),     0, '', (regexp_substr(config, '[^#]+', (regexp_instr(config, '(^|#)TYPE=(.+)($|#)')),     1))) cfg_TYPE,
       decode((regexp_instr(config, '(^|#)LENGTH=(.+)($|#)')),   0, '', (regexp_substr(config, '[^#]+', (regexp_instr(config, '(^|#)LENGTH=(.+)($|#)')),   1))) cfg_LENGTH,
       decode((regexp_instr(config, '(^|#)DECIMALS=(.+)($|#)')), 0, '', (regexp_substr(config, '[^#]+', (regexp_instr(config, '(^|#)DECIMALS=(.+)($|#)')), 1))) cfg_DECIMALS,
       decode((regexp_instr(config, '(^|#)DEFAULT=(.+)($|#)')),  0, '', (regexp_substr(config, '[^#]+', (regexp_instr(config, '(^|#)DEFAULT=(.+)($|#)')),  1))) cfg_DEFAULT,
       config
from test_tab;

Resultado:

CFG	CFG_TYPE	CFG_LENGTH	CFG_DECIMALS	CFG_DEFAULT	CONFIG
---	-----------	----------	-------------	-----------	----------------------------------------
1	TYPE=String	LENGTH=18	DEFAULT=empty			TYPE=String#LENGTH=18#DEFAULT=empty
2	TYPE=Number	LENGTH=1	DECIMALS=0	DEFAULT=0	LENGTH=1#TYPE=Number#DECIMALS=0#DEFAULT=0
3	TYPE=Number	LENGTH=10	DECIMALS=2	DEFAULT=1.00	LENGTH=10#DEFAULT=1.00#TYPE=Number#DECIMALS=2

Estas mismas funciones nos pueden servir para filtrar los datos en la cláusula WHERE o para modificar los datos de la cadena a través del operador SET en una operación UPDATE.

Por último, mediante la cláusula CONNECT BY, podemos listar todos los datos de una de las listas y mostrarlos como filas distintas en el resultado de la consulta:

with test_tab as (select 1 cfg, 'TYPE=String#LENGTH=18#DEFAULT=empty' config from dual)
select cfg, config, regexp_substr(config, '[^#]+', 1, level) key_value
from test_tab
connect by regexp_substr(config, '[^#]+', 1, level) is not null;

Resultado:

CFG	CONFIG					KEY_VALUE
---	-----------------------------------	-------------
1	TYPE=String#LENGTH=18#DEFAULT=empty	TYPE=String
1	TYPE=String#LENGTH=18#DEFAULT=empty	LENGTH=18
1	TYPE=String#LENGTH=18#DEFAULT=empty	DEFAULT=empty

Select All / Unselect All Checkbox in Interactive Report Header

Cómo añadir un control en los IR de APEX para marcar / desmarcar todas las casilla de tipo “checkbox” del listado.

12 Things Developers Will Love About Oracle Database 12c Release 2 (All Things SQL)

La nueva versión de Oracle 12cR2 (o 12.2) ya se encuentra disponible en Oracle Cloud. En el siguiente artículo se revisan las principales novedades: 12 Things Developers Will Love About Oracle Database 12c Release 2 (All Things SQL)

  • Easier, Better, Faster, Stronger JSON
    • JSON from SQL
    • JSON in PL/SQL
  • Looooooooooong Names
  • Robust Code using Constants for Data Type Lengths
  • Listagg Improved On Overflow
  • Lightning Fast SQL with Real Time Materialized Views
  • Fast Estimates with Approximate Query Enhancements
  • Verify Data Type Conversions
  • Handle Casting Conversion Errors
  • Single Statement Table Partitioning
  • Automatic List Partitioning
  • Mark Old Code as “Not for Use”
  • PL/SQL Code Coverage

Oracle 12.2 Sharding Option

Sharding en Oracle 12.2

amitzil - Oracle DBA blog

Lately I wrote a post about 12.2 new features. In the post I didn’t list sharding (probably one of the biggest features in this version), as I wanted to dedicate an entire post for it. In this post I will cover this option , but please note, as 12.2 is only released for the cloud and no one can install it and play with it, all the information is based on presentations I’ve seen at OOW and a chat I had with one of the developers in the demo ground. There might be some inaccuracies or mistakes in the post.

Ver la entrada original 787 palabras más