Expresion Regular En PL/SQL Ejecutado En Un Bloque Anonimo

Higarigaoka - Odaiba, Sin comentarios
Hola,
Hoy les traigo como entender y ejecutar una expresión regular en un bloque anonimo de PL/SQL.


String vca_expreregular = '^|\d{ 0-9 }\=\,\[A-Z][0-9]\,\|$'

Descripcion:

  1. Despues del caracter ^ (acento circunflejo), se coloca el caracter con el cual empezara la expresion regular, en este caso se especifica que la cadena a la cual se le va a aplicar la expresion regular, comienza con | (pleca o barra vertical).
  2. Se utiliza el caracter \ (backslash), para especificar que obligatoriamente despues del caracter | (pleca o barra vertical), van numeros del 0 al 9, dentro de { } (corchetes). La letra d no es obligatoria, puede ser opcional.
  3. Se especifica que obligatoriamente despues de los numeros, va el caracter = (igual).
  4. Se especifica que obligatoriamente despues del caracter = (igual), va el caracter , (coma).
  5. Se especifica que obligatoriamente despues del caracter , (coma), van letras de la A a la Z, dentro de llaves [ ] y/o numeros del 0 al 9, tambien dentro de llaves.
  6. Se especifica que obligatoriamente despues de las letras y de los numeros, va obligatoriamente el caracter , (coma).
  7. Se especifica que obligatoriamente despues del caracter , (coma), va el caracter | (pleca o barra vertical).
  8. Y se finaliza la expresion con el caracter $ (signo de pesos).

Nota:
Todo esto dentro de ' ' (comillas simples).

Ejemplo de uso en PL/SQL:

¿Que es un bloque anónimo?
Un bloque anónimo es un subprograma que se utiliza para realizar una acción, para calcular y devolver un valor; se caracteriza porque no tiene nombre y se suele ejecutar y crear desde PL/SQL.
Todo bloque anónimo debe acabar en . para que sea almacenado en el buffer SQL. para poder ejecutarse luego con la orden run.

--Bloque anonimo, salida por consola DBMS
DECLARE
  vca_valor                 varchar2(1000);
  vca_expreregular      varchar2(1000);
  pca_resultado          varchar2(1000);--salida
  pca_datos               varchar2(1000);--salida

BEGIN
   --Declaracion del valor de las variables
   vca_valor             := '|101=,A34,|1=,A7,A10,|22=,A9,|60=,A26,|105=,A29|';
   vca_expreregular  := '^|\d{ 0-9 }\=\,\[A-Z][0-9]\,\|$';
  
    -- Sentencia
    SELECT 1
    INTO pca_datos
    FROM DUAL
    WHERE REGEXP_LIKE(vca_valor, '^|\d{ 0-9 }\=\,\[A-Z][0-9]\,\|$');
    
    -- Imprimir por consola (Salida de DBMS) 
    dbms_output.PUT_LINE('Valores encontrados ' || pca_datos); 
    
    EXCEPTION
  -- Sentencia control de excepcion
    WHEN OTHERS THEN 
          pca_resultado := 'Error, en la expresion regular: '||SQLCODE||'-'||SQLERRM;
   
END;--Fin bloque anonimo

¿Que es DUAL?
DUAL en Oracle, es una tabla del sistema que existe para ejecutar ciertas consultas donde no hay una tabla creada o se utiliza para ejecutar funciones predefinidas como sysdate.

Nota:
Para ver la impresion de este bloque anonimo, se utiliza la salida por consola DBMS.

SQL Developer -> Ver -> Salida DBMS.

0 comentarios :

Publicar un comentario