Curso Básico de Pl Sql Oracle

  • 188,924 views
Uploaded on

Curso Básico de Pl Sql Oracle

Curso Básico de Pl Sql Oracle

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • like
    Are you sure you want to
    Your message goes here
  • gomaster11@gmail.com
    Are you sure you want to
    Your message goes here
  • Hola excelente presentacion, me la podrias compartir para mis estudios
    Are you sure you want to
    Your message goes here
  • Puedes compartirmela por favor?
    a albertorosas180391@gmail.com
    te lo agradecería infinitamente.
    Are you sure you want to
    Your message goes here
  • Buen día Luis,

    Muy buena la presentación. Es posible que la compartas (ri_salas@yahoo.com)

    Saludos
    Ricardo
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
188,924
On Slideshare
0
From Embeds
0
Number of Embeds
29

Actions

Shares
Downloads
0
Comments
31
Likes
133

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Introducción PL/SQL
    • Qué es PL/SQL ?
    • Características
    1
  • 2. Que es PL/SQL ?
    • Es un lenguaje de programación usado para accesar bases de datos Oracle.
    • Está integrado con la base de datos.
    • PL/SQL es una ampliación al SQL.
  • 3. Características...
    • Lenguaje Estructurado
    • Declare  Sección para declarar variables,cursores,tipos,etc.
    • Begin  Sección para estamentos SQL y estructuras de control.
    • Exception  Sección para el manejo de errores y excepciones.
    • End ;
  • 4. Características...
    • Variables y Tipos(Predefinidos o de Usuario.
      • Variables con tipos predefinidos : date,
      • number,char,varchar,long,blob,etc.
      • v_nombre varchar2(30);
      • v_fecha date;
      • v_dias number;
  • 5. Características...
    • Variables y Tipos(Predefinidos o de Usuario.
      • Variables con Tipos de Usuario :
      • TYPE t_afiliado is Record (
      • cedula number,
      • nombre varchar2(50) );
      • v_afiliado t_afiliado;
  • 6. Características...
    • Estructuras de Control
      • If ...then... Else... End if
      • Loop ...Exit When... End Loop
      • For ... In...Loop ...End Loop
  • 7. Características...
    • Cursores
    • Usados para procesar múltiples registros.
    • CURSOR c_presta IS
    • SELECT cod_prestatario
    • FROM csv_prestatario
    • WHERE cod_oficina = ‘101’;
  • 8. Características...
    • Otras Características :
      • Manejo de Paquetes, Procedimientos y Funciones.
      • Objetos y Métodos.
  • 9. PL/SQL Basics...
    • Bloques PL/SQL.
      • Bloque Anónimo.
      • Bloque Nombrado.
      • Subprogramas.
      • Triggers.
      • Estructura Básica .
    • Identificadores .
    • Comentarios .
    • Declaración Variables.
    2
  • 10. PL/SQL Basics...
    • Tipos PL/SQL.
    • Usando %TYPE.
    • Subtipos Definidos.
    • Conversiones.
    • Alcance de las Variables.
    • Estructuras de Control.
    2
  • 11. Estructura Básica...
    • DECLARE
    • /* Sección Declarativa... */
    • BEGIN
    • /* Sección Ejecutable... */
    • EXCEPTION
    • /* Sección Exception... */
    • END ;
  • 12. Identificadores...
    • Objetos PL/SQL.
      • Variables.
      • Cursores.
      • Types.
      • Subprogramas.
    • Correctos: Incorrectos:
      • x x+y
      • v_id_personal _temp_
      • v2_ nom afilia
      • id_usuario_# 1_apellido
    • Caractérísticas.
      • Máximo 30 Caracteres.
      • No Palabras Reservadas.
  • 13. Comentarios...
    • Línea Sencilla. (--)
      • DECLARE
      • d_fecha DATE; -- Se Declara la Variable
      • -- Tipo Fecha...
      • BEGIN
      • ----------------------------------
      • -- Asigna la Fecha del Sistema...
      • d_fecha := SYSDATE;
      • END;
    • Multi-Línea. (/*... */)
      • DECLARE
      • d_fecha DATE; /* Se Declara la Variable
      • Tipo Fecha...*/
      • BEGIN
      • /*--------------------------------
      • Asigna la Fecha del Sistema...*/
      • d_fecha := SYSDATE;
      • END;
  • 14. Declaración Variables...
    • Sintaxis...
      • nom_vble type [CONSTANT] [NOT NULL] [:= valor ]:
      • DECLARE
      • vc_nom_afilia VARCHAR2(50);
      • n_num_afilia NUMBER := 50;
      • n_pos BINARY_INTEGER := 0;
      • n_cant_minima CONSTANT NUMBER(5) := 10000;
      • n_num_cartas NUMBER DEFAULT 50;
      • INCORRECTAS
      • DECLARE
      • vc_nom_afilia, vc_ape_afilia VARCHAR2(50);
      • n_num_afilia NUMBER NOT NULL;
  • 15. Tipos PL/SQL...
  • 16. Usando %TYPE...
      • DECLARE
      • vc_nom_afilia VARCHAR2(50);
      • DECLARE
      • x_nom_afilia csv_afiliado.nm1_afilia%TYPE;
      • NOTA:
    • Es una buena práctica de Programación el uso de %TYPE, ya que proporciona Flexibilidad y Habilidad para que los programas se adapten al movimiento de la Base de Datos.
  • 17. Subtipos Definidos...
    • Sintaxis...
      • SUBTYPE tipo_nuevo IS tipo_original ;
      • DECLARE
      • SUBTYPE tn_contador IS NUMBER;
      • n_contador tn_contador;
      • SUBTYPE tx_nom_afilia IS csv_afiliado.nm1_afilia%TYPE;
      • x_vble NUMBER(4);
      • SUBTYPE tn_cantidad IS x_vble%TYPE;
      • n_vble tn_cantidad;
  • 18. Conversiones...
    • Explícitas...
      • TO_CHAR
      • TO_DATE
      • TO_NUMBER
      • RAWTOHEX
      • HEXTORAW
      • CHARTOROWID
      • ROWIDTOCHAR
    • Implícitas...
      • DECLARE
      • vc_edad VARCHAR2(5);
      • BEGIN
      • SELECT edad_afilia
      • INTO vc_edad
      • FROM csv_afiliado
      • WHERE ide_afili = ‘98532011’;
      • END;
  • 19. Alcance de las Variables...
    • DECLARE
    • b_Ok BOOLEAN;
    • n_valor NUMBER(9);
    • BEGIN
    • DECLARE
    • n_valor CHAR(11);
    • d_fecha DATE;
    • BEGIN
    • END;
    • END;
  • 20. Alcance de las Variables...
    • DECLARE
    • b_Ok BOOLEAN;
    • n_valor NUMBER(9);
    • BEGIN
    • DECLARE
    • n_valor CHAR(11);
    • d_fecha DATE;
    • BEGIN
    • END;
    • END;
  • 21. Alcance de las Variables...
    • DECLARE
    • b_Ok BOOLEAN;
    • n_valor NUMBER(9);
    • BEGIN
    • DECLARE
    • n_valor CHAR(11);
    • d_fecha DATE;
    • BEGIN
    • END;
    • END;
    n_valor Number(9)
  • 22. Alcance de las Variables...
    • DECLARE
    • b_Ok BOOLEAN;
    • n_valor NUMBER(9);
    • BEGIN
    • DECLARE
    • n_valor CHAR(11);
    • d_fecha DATE;
    • BEGIN
    • END;
    • END;
    n_valor Number(9) n_valor Char(11)
  • 23. Alcance de las Variables...
    • DECLARE
    • b_Ok BOOLEAN;
    • n_valor NUMBER(9);
    • BEGIN
    • DECLARE
    • n_valor CHAR(11);
    • d_fecha DATE;
    • BEGIN
    • END;
    • END;
    n_valor Number(9) n_valor Char(11) n_valor Number(9)
  • 24. Alcance de las Variables...
    • <<l_Fuera>>
    • DECLARE
    • b_Ok BOOLEAN;
    • n_valor NUMBER(9);
    • BEGIN
    • DECLARE
    • n_valor CHAR(11);
    • d_fecha DATE;
    • BEGIN
    • END;
    • END;
    n_valor Number(9) n_valor Char(11) l_Fuera .n_valor Number(9)
  • 25. Estructuras de Control...
    • IF/THEN/ELSE
      • IF <Cond1.> THEN
      • <Instrucciones...>;
      • [ELSIF <Cond2.> THEN
      • <Instrucciones...>];
      • ...
      • [ELSE
      • <Instrucciones...>];
      • END IF;
  • 26. Estructuras de Control...
    • IF/THEN/ELSE
      • IF <Cond1.> THEN
      • <Instrucciones...>;
      • [ELSIF <Cond2.> THEN
      • <Instrucciones...>];
      • ...
      • [ELSE
      • <Instrucciones...>];
      • END IF;
    • Numéricas.
      • n_cant = 0
      • n_cant >= 0
    • Cadena .
      • x_nom = ‘Lopez’
    • Booleana .
      • b_ok
      • NOT b_ok
    • Nulas .
      • n_cant IS NULL
  • 27. Estructuras de Control...
    • IF/THEN/ELSE
    • Loops
      • Simples.
        • LOOP
        • <Instrucciones>
        • END LOOP;
  • 28. Estructuras de Control...
    • IF/THEN/ELSE
    • Loops
      • Simples.
        • LOOP
        • <Instrucciones>
        • END LOOP;
        • Con salida...
        • LOOP
        • EXIT [WHEN <Condición>];
        • END LOOP;
  • 29. Estructuras de Control...
    • IF/THEN/ELSE
    • Loops
      • Simples.
      • WHILE Loops.
        • WHILE <Condición> LOOP
        • <Instrucciones>;
        • END LOOP;
  • 30. Estructuras de Control...
    • IF/THEN/ELSE
    • Loops
      • Simples.
      • WHILE Loops.
      • # FOR Loops.
        • FOR contador IN [REVERSE] lim_inf..lim_sup LOOP
        • <Instrucciones>;
        • END LOOP;
        • FOR n IN 1..50 LOOP
        • ...
  • 31. Estructuras de Control...
    • IF/THEN/ELSE
    • Loops
      • Simples.
      • WHILE Loops.
      • # FOR Loops.
        • FOR contador IN [REVERSE] lim_inf..lim_sup LOOP
        • <Instrucciones>;
        • END LOOP;
        • FOR n IN 1..50 LOOP
        • ...
    Pueden ser variables: DECLARE n_lim_inf NUMBER := 1; n_lim_sup NUMBER := 50; BEGIN FOR n IN n_lim_inf..n_lim_sup LOOP ... Usando REVERSE: DECLARE n_lim_inf NUMBER := 1; n_lim_sup NUMBER := 50; BEGIN FOR n IN REVERSE 1..50 LOOP ...
  • 32. Estructuras de Control...
    • IF/THEN/ELSE
    • Loops
      • Simples.
      • WHILE Loops.
      • # FOR Loops.
        • FOR contador IN [REVERSE] lim_inf..lim_sup LOOP
        • <Instrucciones>;
        • END LOOP;
        • FOR n IN 1..50 LOOP
        • ...
    • No es necesario declarar la vble: n.
    • Si se declara, la vble n, pierde el valor dentro del ciclo. Esta variable es de tipo BINARY_INTEGER.
    • DECLARE
    • n NUMBER := 10;
    • BEGIN
    • FOR n IN 1..5 LOOP
    • ...
  • 33. Estructuras de Control...
    • IF/THEN/ELSE
    • Loops
      • Simples.
      • WHILE Loops.
      • # FOR Loops.
    • GOTO
      • Etiquetas (<<...>>).
  • 34. Estructuras de Control...
    • IF/THEN/ELSE
    • Loops
      • Simples.
      • WHILE Loops.
      • # FOR Loops.
    • GOTO
      • Etiquetas (<<...>>).
      • Restricciones.
    • Saltar al interior de un IF .
    • Saltar al Interior de un Bloque.
    • Saltar de un IF a otro o al mismo por el ELSE .
    • Saltar desde una rutina de manejo de EXCEPTION al bloque anterior.
  • 35. Records and Tables
    • Records
      • Declaración
      • Asignación
      • Usando %ROWTYPE
    • Tables
      • Declaración
      • Asignación
      • Atributos
    3
  • 36. Records...
    • Son similares a las estructuras de Power Builder.
    • Se manejan como una unidad.
    • Declaración:
      • Sintaxis
      • TYPE nombre_record IS RECORD (
      • campo_1 type1 [ NOT NULL ] [:= expr1],
      • campo_2 type2 [ NOT NULL ] [:= expr2],
      • ...
      • campo_n typen [ NOT NULL ] [:= exprn])
  • 37. Records...
    • Declaración:
    • Ej:
    • TYPE t_afiliado is Record (
      • cedula number,
      • nombre csv_afiliado.nm1_afilia %type );
      • v_afiliado t_afiliado ;
  • 38. Records...
    • Asignación.
      • Un registro puede ser asignado a otro registro.
      • Sintaxis:
        • record1 := record2;
    • record_name.campo := valor;
    • Ej: t_afiliado.cedula := 16762276;
    • t_afiliado.nombre := Gus;
    • SELECT ide_afili,nm1_afilia
    • INTO t_afiliado
    • FROM csv_afiliado
    • WHERE cod_afiliado = as_codigo;
  • 39. Records
    • Usando %ROWTYPE.
    • row_cartera CSV_CARTERA %ROWTYPE;
  • 40. Tables...
    • Son similares a un arreglo.
    • Declaración:
      • Sintaxis
      • TYPE table_name IS TABLE OF type
      • INDEX BY BINARY_INTEGER ;
      • Ej: TYPE t_cartera IS TABLE OF csv_cartera %ROWTYPE
      • INDEX BY BINARY_INTEGER ;
  • 41. Tables...
    • Asignación
      • Sintaxis:
      • table( index ).campo
      • La variable index debe ser de tipo binary_integer .
      • Ej: TYPE t_codigos IS TABLE OF CHAR(13)
      • INDEX BY BINARY_INTEGER;
      • V_codigos t_codigos;
      • V_cartera t_cartera;
      • V_codigos(1) := ‘1010000000123’;
      • V_cartera(1).con_cartera := ‘1010001234556’;
  • 42. Tables...
    • Atributos
    Descripción Retorna Tipo Atributo Índice de la anterior fila BINARY_INTEGER PRIOR Índice de la sgte fila BINARY_INTEGER NEXT Índice de ultima fila BINARY_INTEGER LAST Índice de 1a Fila BINARY_INTEGER FIRST Valida existencia BOOLEAN EXISTS Borra Filas N/A DELETE Numero de Filas NUMBER COUNT
  • 43. Tables...
    • Atributos
    • Ej:
    • DECLARE
    • TYPE t_table IS TABLE OF CHAR ( 1 )
    • INDEX BY BINARY_INTEGER ;
    • v_tabla t_table ;
    • regs BINARY_INTEGER ;
    • filas BINARY_INTEGER ;
    • BEGIN
    • v_tabla ( 1 ) := 'a' ;
    • v_tabla ( 3 ) := 'b' ;
    • v_tabla ( 5 ) := 'c' ;
    • regs := v_tabla . first ;
  • 44. Tables...
    • Atributos
    • filas := v_tabla . COUNT ;
    • IF v_tabla .EXISTS( 4 ) THEN
    • dbms_output . put_line ( 'EXISTE' );
    • ELSE
    • dbms_output . put_line ( 'NO EXISTE' );
    • END IF;
    • LOOP
    • dbms_output . put_line ( regs );
    • dbms_output . put_line ( 'leo ' ||v_tabla ( regs ));
    • EXIT WHEN regs = v_tabla . last ;
    • regs := v_tabla .NEXT( regs );
    • END LOOP;
    • END;
  • 45. SQL en PL/SQL...
    • Categorías SQL .
    • D.M.L.
    • DB Link.
    • Sinónimos.
    • Pseudo -Columnas.
    • Privilegios.
    • Control de Transacciones.
      • COMMIT;
      • ROLLBACK;
      • SAVEPOINT;
    4
  • 46. Categorías SQL...
    • D.M.L. (INSERT, UPDATE, DELETE, SET TRANSACTION, EXPLAIN PLAN).
    • D.D.L. (DROP, CREATE, ALTER, GRANT, REVOKE).
    • Control de Transacciones. (COMMIT, ROLLBACK, SAVEPOINT).
    • Control de Sesión. (ALTER SESION, SET ROLE).
    • Control del Sistema. (ALTER SYSTEM).
    • SQL Embebido. (CONNECT, DECLARE CURSOR, ALLOCATE).
  • 47. D.M.L...
    • SELECT.
    • SELECT <Lista_Selección>
    • INTO <Lista_Variables>
    • FROM <Lista_Tablas>
    • [WHERE <Condiciones>]
    • [GROUP BY <Lista_Selección>]
    • [ORDER BY <Lista_Selección>];
  • 48. D.M.L...
    • SELECT.
    • INSERT.
    • INSERT INTO <Tabla_Referenciada>
    • [(<Lista_Columnas>)]
    • VALUES
    • (<Lista_Expresiones>);
    • INSERT INTO <Tabla_Referenciada>
    • < Sentencia_SELECT >;
  • 49. D.M.L...
    • SELECT.
    • INSERT.
    • UPDATE.
    • UPDATE <Tabla_Referenciada>
    • SET <Columna_1> = <Expresión_1>,
    • [<Columna_2> = <Expresión_2>,
    • <Columna_n> = <Expresión_n>]
    • [WHERE <Lista_Condiciones>];
  • 50. D.M.L...
    • SELECT.
    • INSERT.
    • UPDATE.
    • DELETE.
    • DELETE FROM <Tabla_Referenciada>
    • [WHERE <Lista_Condiciones>];
  • 51. DB Link...
    • CREATE DATABASE LINK <Nombre_Enlace>
    • CONNECT TO <Nombre_Usuario> IDENTIFIED BY <Contraseña>
    • USING <Cadena_Conexión>;
    • CREATE DATABASE LINK PRUEBAS
    • CONNECT TO nalarodriguez IDENTIFIED BY nalarodriguez
    • USING “PRODUCCION”;
    • UPDATE csv_afiliado@PRUEBAS
    • SET nm1_afilia = ‘PEDRO’
    • WHERE nm1_afilia LIKE ‘PEDR%’;
  • 52. Sinónimos...
    • CREATE SYNONYM <Nombre_Sinónimo> FOR <Objeto_Referencia>;
    • CREATE SYNONYM afiliado_consulta FOR csv_afiliado@PRUEBAS;
  • 53. Sinónimos...
    • CREATE SYNONYM <Nombre_Sinónimo> FOR <Objeto_Referencia>;
    • CREATE SYNONYM afiliado_consulta FOR csv_afiliado@PRUEBAS;
    • UPDATE csv_afiliado@PRUEBAS
    • SET nm1_afilia = ‘PEDRO’
    • WHERE nm1_afilia LIKE ‘PEDR%’;
    • Reemplazando...
    • UPDATE afiliado_consulta
    • SET nm1_afilia = ‘PEDRO’
    • WHERE nm1_afilia LIKE ‘PEDR%’;
  • 54. Pseudo-Columnas...
    • CURRVAL y NEXTVAL.
      • <Lista_Selección> de Sentencias SELECT.
      • <Lista_Expresiones> de la Cláusula VALUES (INSERT).
      • Con la Cláusula SET del UPDATE.
      • No pueden usarse en WHERE.
    • LEVEL.
    • ROWID.
    • ROWNUM.
    • USER.
    • SYSDATE.
  • 55. Privilegios... ( GRANT y REVOKE )
    • GRANT...
    • GRANT <Privilegio> ON <Objeto> TO <Destinatario>
    • [WITH GRANT OPTION];
    • GRANT <Privilegio> TO <Destinatario>
    • [WITH GRANT OPTION];
    • Objetos:
    • GRANT SELECT ON csv_afiliado TO nalcaagudelo;
    • GRANT INSERT, UPDATE ON csv_afiliado TO nalcaagudelo;
    • Sistema:
    • GRANT CREATE TABLE, ALTER ANY PROCEDURE TO nalcaagudelo;
  • 56. Privilegios... ( GRANT y REVOKE )
    • GRANT...
    • REVOKE...
    • REVOKE <Privilegio> ON <Objeto> FROM <Destinatario>
    • [CASCADE CONSTRAINTS];
    • REVOKE <Privilegio> FROM <Destinatario>;
    • Objetos:
    • REVOKE SELECT ON csv_afiliado FROM nalcaagudelo;
    • REVOKE INSERT, UPDATE ON csv_afiliado FROM nalcaagudelo;
    • Sistema:
    • REVOKE CREATE TABLE, ALTER ANY PROCEDURE FROM nalcaagudelo;
  • 57. Funciones SQL Predefinidas
    • SQL proporciona diversas funciones predefinidas que se puede llamar desde una orden SQL.
    • Ej: SELECT UPPER(nm1_afilia) FROM csv_afiliado
    • Muchas de las funciones pueden ser llamadas desde ordenes procedimentales.
    • EJ:
    • DECLARE
    • v_nm1_afilia csv_afiliado.nm1_afilia%TYPE;
    • BEGIN
    • v_nm1_afilia := UPPER(‘Orlando’);
    • END;
    5
  • 58. Categorias de Funciones
    • Tipo de argumento que cada función admite
    • Grupo
    • De una sola fila
  • 59. Funciones de carácter que devuelven valores de carácter
    • CHR
    • Sintaxis
    • CHR( x )
    • Propósito
    • Devuelve el carácter del conjunto de caracteres cuyo valor es equivalente a x .
    • Ejemplo:
    • select chr ( 97 ) from dual;
    • Resultado: a
  • 60. Funciones de carácter que devuelven valores de carácter
    • CONCAT
    • Sintaxis
    • CNCAT( cadena1,cadena2 )
    • Propósito
    • Devuelve la cadena1 concatenada con la cadena2.
    • Ejemplo:
    • select concat ( 'Orlando' , ' Valverde' ) from dual;
    • Resultado: Orlando Valverde
  • 61. Funciones de carácter que devuelven valores de carácter
    • INITCAP
    • Sintaxis
    • INITCAP( cadena )
    • Propósito
    • Devuelve la misma cadena,con el primer carácter de cada palabra en mayúscula y el resto en minusculas.
    • Ejemplo:
    • select initcap ( 'OrLando valvErde' ) from dual;
    • Resultado: Orlando Valverde
  • 62. Funciones de carácter que devuelven valores de carácter
    • LOWER
    • Sintaxis
    • LOWER( cadena )
    • Propósito
    • Devuelve la misma cadena,con todos los caracteres en minúsculas.
    • Ejemplo:
    • select lower ( 'OrLando valvErde' ) from dual;
    • Resultado: orlando valverde
  • 63. Funciones de carácter que devuelven valores de carácter
    • LPAD
    • Sintaxis
    • LPAD( cadena1, x[, cadena2 ])
    • Propósito
    • Devuelve la cadena1 rellena hacia la izquierda con los caracteres de la cadena2.
  • 64. Funciones de carácter que devuelven valores de carácter
    • LPAD
    • Ejemplos
    • select LPAD ( 'Orlando Valverde' , 18 ) from dual
    • Resultado: Orlando Valverde
    • select LPAD ( 'Orlando Valverde' , 25,’XY’ ) from dual
    • Resultado: XYXYXYXYXOrlando Valverde
    • select LPAD ( 'Orlando Valverde' , 17,’XY’ ) from dual
    • Resultado: XOrlando Valverde
  • 65. Funciones de carácter que devuelven valores de carácter
    • LTRIM
    • Sintaxis
    • LTRIM( cadena1[,cadena2] )
    • Propósito
    • Devuelve la cadena1 , quitando los caracteres de la izquierda contenidos en cadena2 .
    • Ejemplo:
    • select ltrim ( 'OrLando’, ‘O’ ) from dual;
    • Resultado: rlando
  • 66. Funciones de carácter que devuelven valores de carácter
    • REPLACE
    • Sintaxis
    • REPLACE( cadena,cad_busc[,cad_subst] )
    • Propósito
    • Devuelve cadena , reemplazando todas las apariciones de la cadena cad_busc con la cadena cad_subst
    • Ejemplo:.
    • select replace( 'Orlando' , 'Orl' , 'Hern' ) from dual ;
    • Resultado: Hernando
  • 67. Funciones de carácter que devuelven valores de carácter
    • RPAD
    • Sintaxis
    • RPAD( cadena1, x[, cadena2 ])
    • Propósito
    • Devuelve la cadena1 rellena hacia la derecha con los caracteres de la cadena2.
  • 68. Funciones de carácter que devuelven valores de carácter
    • RPAD
    • Ejemplos
    • select RPAD ( 'Orlando Valverde' , 18 ) from dual
    • Resultado: Orlando Valverde
    • select RPAD ( 'Orlando Valverde' , 25,’XY’ ) from dual
    • Resultado: Orlando ValverdeXYXYXYXYX
    • select LPAD ( 'Orlando Valverde' , 17,’XY’ ) from dual
    • Resultado: Orlando ValverdeX
  • 69. Funciones de carácter que devuelven valores de carácter
    • RTRIM
    • Sintaxis
    • RTRIM( cadena1[,cadena2] )
    • Propósito
    • Devuelve la cadena1 , quitando los caracteres de la derecha contenidos en cadena2 .
    • Ejemplo:
    • select rtrim ( 'OrLando, ‘o’ ) from dual;
    • Resultado: Orland
  • 70. Funciones de carácter que devuelven valores de carácter
    • SOUNDEX
    • Sintaxis
    • SOUNDEX( cadena )
    • Propósito
    • Devuelve la representación fonética de cadena.
    • Ejemplo:
    • select soundex ( 'Orlando’ ) from dual;
    • Resultado: O645
  • 71. Funciones de carácter que devuelven valores de carácter
    • SUBSTR
    • Sintaxis
    • SUBSTR( cadena,a[,b] )
    • Propósito
    • Devuelve una porción, de b caracteres de longitud, de la cadena proporcionada como argumento, empezando a partir de la posición a .
    • Ejemplo:
    • select substr ( 'Orlando’,2,2 ) from dual;
    • Resultado: rl
  • 72. Funciones de carácter que devuelven valores de carácter
    • SUBSTRB
    • Sintaxis
    • SUBSTRB( cadena,a[,b] )
    • Propósito
    • Se comporta igual que SUBSTR, excepto en que a y b se especifican en bytes, y no en caracteres.
    • Ejemplo:
    • select substrb ( 'Orlando’,2,2 ) from dual;
    • Resultado: rl
  • 73. Funciones de carácter que devuelven valores de carácter
    • TRANSLATE
    • Sintaxis
    • TRANSLATE( cadena,cad_origen,cad_destino )
    • Propósito
    • Devuelve la cadena proporcionada como argumento, con todas las apariciones de cada carácter de la cadena cod_origen reemplazadas por el correspondiente carácter de la cadena cad_destino .
    • Ejemplo:
    • select translate ( 'Orlando’,’rl’,’ef’ ) from dual;
    • Resultado: Oefando
  • 74. Funciones de carácter que devuelven valores de carácter
    • UPPER
    • Sintaxis
    • UPPER( cadena )
    • Propósito
    • Devuelve la cadena proporcionada como argumento, con todas las letras en mayúsculas.
    • Ejemplo:
    • select upper ( 'Orlando’ ) from dual;
    • Resultado: ORLANDO
  • 75. Funciones de carácter que devuelven valores numéricos
    • ASCII
    • Sintaxis
    • ASCII( cadena )
    • Propósito
    • Devuelve la representación decimal, en el conjunto de caracteres de la base de datos, del primer byte de la cadena .
    • Ejemplo:
    • select ascii ( 'O’ ) from dual;
    • Resultado: 79
  • 76. Funciones de carácter que devuelven valores numéricos
    • INSTR
    • Sintaxis
    • INSTR( cadena1,cadena2 [ ,a [ ,b ]])
    • Propósito
    • Devuelve la posición de la cadena1 donde está contenida la cadena2 .
    • Ejemplo:
    • select instr ( 'orlando' , 'o' , 1 , 2 ) from dual ;
    • Resultado: 7
  • 77. Funciones de carácter que devuelven valores numéricos
    • INSTRB
    • Sintaxis
    • INSTRB( cadena1,cadena2 [ ,a [ ,b ]])
    • Propósito
    • Se comporta como INSTR, salvo en que a y el valor de retorno se expresan como bytes.
    • Ejemplo:
    • select instrb ( 'orlando' , 'o' , 1 , 2 ) from dual ;
    • Resultado: 7
  • 78. Funciones de carácter que devuelven valores numéricos
    • LENGTH
    • Sintaxis
    • LENGTH( cadena )
    • Propósito
    • Devuelve la longitud de la cadena , en caracteres.
    • Ejemplo:
    • select length ( 'orlando' ) from dual ;
    • Resultado: 7
  • 79. Funciones de carácter que devuelven valores numéricos
    • LENGTHB
    • Sintaxis
    • LENGTHB( cadena )
    • Propósito
    • Se comporta igual que LENGTH, salvo en que el valor de retorno está expresado en bytes.
    • Ejemplo:
    • select lengthb ( 'orlando' ) from dual ;
    • Resultado: 7
  • 80. Funciones de carácter que devuelven valores numéricos
    • NLSSORT
    • Sintaxis
    • NLSSORT ( cadena )
    • Propósito
    • Devuelve la cadena de bytes empleadas para la ordenación de la cadena , proporcionada como argumento.
    • Ejemplo:
    • select nlssort ( 'orlando' ) from dual ;
    • Resultado: 6F726C616E646F00
  • 81. Funciones numéricas
    • ABS
    • Sintaxis
    • ABS( x )
    • Propósito
    • Devuelve el valor absoluto de x .
    • Ejemplo:
    • select abs ( 7 ) from dual ;
    • Resultado: 7
  • 82. Funciones numéricas
    • ASIN
    • Sintaxis
    • ASIN( x )
    • Propósito
    • Devuelve el arco seno de x . El rango de x debe estar entre –1 y 1.
    • Ejemplo:
    • select asin ( 1 ) from dual ;
    • Resultado: 1.57079633
  • 83. Funciones numéricas
    • ATAN
    • Sintaxis
    • ATAN( x )
    • Propósito
    • Devuelve el arco tangente de x .
    • Ejemplo:
    • select atan ( 0.5 ) from dual ;
    • Resultado: .463647609
  • 84. Funciones numéricas
    • ATAN2
    • Sintaxis
    • ATAN( x )
    • Propósito
    • Devuelve el arco tangente de x e y .ATAN2(x,y) es lo mismo que ATAN(x/y).
    • Ejemplo:
    • select atan ( 1,2 ) from dual ;
    • Resultado: .463647609
  • 85. Funciones numéricas
    • CEIL
    • Sintaxis
    • CEIL( x )
    • Propósito
    • Devuelve el menor entero que sea mayor o igual que x .
    • Ejemplo:
    • select ceil ( 18.1 ) from dual ;
    • Resultado: 19
  • 86. Funciones numéricas
    • COS
    • Sintaxis
    • COS( x )
    • Propósito
    • Devuelve el coseno de x .
    • Ejemplo:
    • select cos ( 0 ) from dual ;
    • Resultado: 1
  • 87. Funciones numéricas
    • COSH
    • Sintaxis
    • COSH( x )
    • Propósito
    • Devuelve el coseno hiperbólico de x .
    • Ejemplo:
    • select cosh ( 0 ) from dual ;
    • Resultado: 1
  • 88. Funciones numéricas
    • EXP
    • Sintaxis
    • EXP( x )
    • Propósito
    • Devuelve e elevado a la potencia de x .
    • Ejemplo:
    • select exp (1) from dual ;
    • Resultado: 2.7182818
  • 89. Funciones numéricas
    • FLOOR
    • Sintaxis
    • FLOOR( x )
    • Propósito
    • Devuelve el mayor entero igual o menor que x .
    • Ejemplo:
    • select floor (23.5) from dual ;
    • Resultado: 23
  • 90. Funciones numéricas
    • LN
    • Sintaxis
    • LN( x )
    • Propósito
    • Devuelve el logaritmo natural de x .
    • Ejemplo:
    • select ln ( 100 ) from dual ;
    • Resultado: 4.6051702
  • 91. Funciones numéricas
    • LOG
    • Sintaxis
    • LOG( x,y )
    • Propósito
    • Devuelve el logaritmo de y en base x .
    • Ejemplo:
    • select log ( 2, 32 ) from dual ;
    • Resultado: 5
  • 92. Funciones numéricas
    • MOD
    • Sintaxis
    • MOD( x,y )
    • Propósito
    • Devuelve resto resultante de dividir x por y .
    • Ejemplo:
    • select mod ( 23, 5 ) from dual ;
    • Resultado: 3
  • 93. Funciones numéricas
    • POWER
    • Sintaxis
    • POWER( x,y )
    • Propósito
    • Devuelve el número x elevado a la potencia de y .
    • Ejemplo:
    • select power ( 4,3 ) from dual ;
    • Resultado: 64
  • 94. Funciones numéricas
    • ROUND
    • Sintaxis
    • ROUND( x[,y] )
    • Propósito
    • Devuelve x redondeado a y posiciones a la derecha del punto decimal.
    • Ejemplo:
    • select round ( 1263.55 ,- 2 ) from dual ;
    • Resultado: 1300
  • 95. Funciones numéricas
    • SIGN
    • Sintaxis
    • SIGN( x )
    • Propósito
    • si x < 0, devuelve –1. Si x =0 devuelve 0. Si x >0, devuelve 1.
    • Ejemplo:
    • select sign ( -47.3 ) from dual ;
    • Resultado: -1
  • 96. Funciones numéricas
    • SIN
    • Sintaxis
    • SIN( x )
    • Propósito
    • Devuelve el seno de x .
    • Ejemplo:
    • select sin ( 0.5 ) from dual ;
    • Resultado: 0,479425538604203
  • 97. Funciones numéricas
    • SQRT
    • Sintaxis
    • SQRT ( x )
    • Propósito
    • Devuelve la raíz cuadrada de x .
    • Ejemplo:
    • select sqrt ( 64 ) from dual ;
    • Resultado: 4
  • 98. Funciones numéricas
    • TAN
    • Sintaxis
    • TAN( x )
    • Propósito
    • Devuelve la tangente de x .
    • Ejemplo:
    • select tan ( 0.5 ) from dual ;
    • Resultado: 0,546302489843791
  • 99. Funciones numéricas
    • TANH
    • Sintaxis
    • TANH( x )
    • Propósito
    • Devuelve la tangente hiperbólica de x .
    • Ejemplo:
    • select tanh ( 0.5 ) from dual ;
    • Resultado: 0,46211715726001
  • 100. Funciones numéricas
    • TRUNC
    • Sintaxis
    • TRUNC ( x[,y] )
    • Propósito
    • Devuelve el valor x truncado a y posiciones decimales.
    • Ejemplo:
    • select trunc ( 1263.55 ,- 2 ) from dual ;
    • Resultado: 1200
  • 101. Funciones de Fecha
    • ADD_MONTHS
    • Sintaxis
    • ADD_MONTHS ( d,x )
    • Propósito
    • Devuelve la fecha d más x meses.
    • Ejemplo:
    • select add_months ( ’02-FEB-91’,1 ) from dual ;
    • Resultado: 02-Mar-91
  • 102. Funciones de Fecha
    • LAST_DAY
    • Sintaxis
    • LAST_DAY ( d )
    • Propósito
    • Devuelve la fecha del ultimo día del mes al que d pertenece.
    • Ejemplo:
    • select last_day ( ’02-APR-91’ ) from dual ;
    • Resultado: 30-APR-91
  • 103. Funciones de Fecha
    • MONTHS_BETWEEN
    • Sintaxis
    • MONTHS_BETWEEN ( fecha1 , fecha2 )
    • Propósito
    • Devuelve el número de meses existentes entre fecha1 y fecha2 .
    • Ejemplo:
    • select months_between ( ’12-APR-71’,’12-MAR-97’ ) from dual ;
    • Resultado: -311
  • 104. Funciones de Fecha
    • NEW_TIME
    • Sintaxis
    • NEW_TIME ( d , zona1 , zona2 )
    • Propósito
    • Devuelve la fecha y hora en la franja horaria zona2 , cuando la fecha y hora en la franja horaria zona1 es d .
  • 105. Funciones de Fecha
    • NEXT_DAY
    • Sintaxis
    • NEXT_DAY ( d,cadena )
    • Propósito
    • Devuelve la fecha del día nombrado en cadena que es posterior a la fecha d .
    • Ejemplo:
    • select next_day ( ’18-MAR-02’,’thursday’ ) from dual ;
    • Resultado: 21/03/2002
  • 106. Funciones de Fecha
    • ROUND
    • Sintaxis
    • ROUND ( d[,formato] )
    • Propósito
    • Redondea la fecha d a la unidad especificada en el formato .
    • Ejemplo:
    • select round ( TO_DATE ( '18-MAR-02' ), 'MM' ) from dual;
    • Resultado: 01/04/2002
  • 107. Funciones de Fecha
    • SYSDATE
    • Sintaxis
    • SYSDATE
    • Propósito
    • Devuelve la fecha y hora actuales.
    • Ejemplo:
    • select sysdate from dual;
    • Resultado: 17/03/2002 10:40:20
  • 108. Funciones de Fecha
    • TRUNC
    • Sintaxis
    • TRUNC ( d[,formato] )
    • Propósito
    • Devuelve la fecha d, truncade a la unidad especificada en el formato .
    • Ejemplo:
    • select trunc ( TO_DATE ( '18-MAR-02' ), 'MM' ) from dual;
    • Resultado: 01/03/2002
  • 109. Aritmetica de Fechas
    • Operación
    • d1 – d2
    • Tipo de valor devuelto
    • NUMBER
    • Resultado
    • Devuelve la diferencia en días entre d1 y d2 .
  • 110. Aritmetica de Fechas
    • Operación
    • d1 + d2
    • Tipo de valor devuelto
    • N/A
    • Resultado
    • Dos fechas solo pueden restarse.
  • 111. Aritmetica de Fechas
    • Operación
    • d1 + n
    • Tipo de valor devuelto
    • DATE
    • Resultado
    • Suma n días a d1 . El valor de n puede ser un número real, incluyendo fracción de día.
  • 112. Aritmetica de Fechas
    • Operación
    • d1 - n
    • Tipo de valor devuelto
    • DATE
    • Resultado
    • Restan n días a d1 . El valor de n puede ser un número real, incluyendo fracción de día.
  • 113. Funciones de Conversión
    • CHARTOROWID
    • Sintaxis
    • CHARTOROWID ( cadena )
    • Propósito
    • Convierte un valor CHAR o VARCHAR2, que contiene el formato externo de un valor ROWID, al formato binario interno.
    • Ejemplo:
    • select per_nom from consolida_mes
    • where rowid = CHARTOROWID ( 'AAAAenAAIAAAdVVAAX' );
    • Resultado: Orlando
  • 114. Funciones de Conversión
    • CONVERT
    • Sintaxis
    • CONVERT ( cadena, conjunto_dest[,conjunto_fuente )
    • Propósito
    • Convierte la cadena de caracteres proporcionada como argumento desde el conjunto de caracteres conjunto_fuente al conjunto de caracteres conjunto_dest .
  • 115. Funciones de Conversión
    • HEXTORAW
    • Sintaxis
    • HEXTORAW ( cadena )
    • Propósito
    • Convierte el valor binario representado por cadena a un valor de tipo RAW. La cadena debe contener valores hexadecimales.
    • Ejemplo:
    • INSERT INTO raw_table ( raw_column ) VALUES ( HAXTORAW ( '017D3F' );
  • 116. Funciones de Conversión
    • RAWTOHEX
    • Sintaxis
    • RAWTOHEX ( valor_raw )
    • Propósito
    • Convierte el valor de tipo RAW valor_raw a una cadena de caracteres que contiene su representación hexadecimal.
    • Ejemplo:
    • select rawtohex ( raw_column ) from raw_table ;
    • Resultado: 017D3F
  • 117. Funciones de Conversión
    • ROWIDTOCHAR
    • Sintaxis
    • ROWIDTOCHAR ( rowid )
    • Propósito
    • Convierte el valor ROWID, a su representación externa en forma de cadena de 18 caracteres.
    • Ejemplo:
    • select rowidtochar(rowid) from consolida_mes
    • where rownum = 1 ;
    • Resultado: AAAAenAAIAAAdVVAAX
  • 118. Funciones de Conversión
    • TO_CHAR
    • Sintaxis
    • TO_CHAR ( d[,formato[,paramnls]] )
    • Propósito
    • Convierte la fecha d a una cadena de caracteres VARCHAR2. El parámetro paramnls controla el idioma de los componentes de mes y día de la cadena devuelta. El formato de paramnls es: ‘NLS_DATE_LANGUAGE = idioma’
    • Ejemplo:
    • select to_char(sysdate,’dd/mm/yyyy’) from dual;
    • Resultado: 19/03/2002
  • 119. Funciones de Conversión
    • TO_CHAR(etiquetas)
    • Sintaxis
    • TO_CHAR ( etiqueta[,formato] )
    • Propósito
    • Convierte la etiqueta MLSLABELal tipo VARCHAR2.
  • 120. Funciones de Conversión
    • TO_CHAR(números)
    • Sintaxis
    • TO_CHAR ( num[,formato[,paramnls]] )
    • Propósito
    • Convierte el argumento n a una cadena de caracteres VARCHAR2. El parámetro paramnls se emplea para especificar el separador decimal y de grupo, y el simbolo de moneda. Puede tener el formato ‘NLS_NUMERIC_CHARS = “ dg ” NLS_CURRENCY = “ cadena ”’, donde d y g representan los separadores decimales y de grupo, respectivamente y cadena representa el símbolo de la moneda
    • Ejemplo:
    • select to_char(123456,’99G99G99’) from dual;
    • Resultado: 12,34,56
  • 121. Funciones de Conversión
    • TO_DATE
    • Sintaxis
    • TO_DATE ( cadena[,formato[,paramnls]] )
    • Propósito
    • Convierte una cadena CHAR o VARCHAR2 a una valor de fecha tipo DATE. El parámetro formato es una cadena de formato fecha.
    • Ejemplo:
    • select to_date(’19/03/2002’,’dd/mm/yyyy’) from dual;
    • Resultado: 19/03/2002
  • 122. Funciones de Conversión
    • TO_LABEL
    • Sintaxis
    • TO_LABEL ( cadena[,formato] )
    • Propósito
    • Convierte una cadena CHAR o VARCHAR2 en una etiqueta MLSLABEL. El parámetro formato se utiliza para la conversion.
  • 123. Funciones de Conversión
    • TO_MULTI_BYTE
    • Sintaxis
    • TO_MULTI_BYTE ( cadena )
    • Propósito
    • Convierte la cadena con todos los caracteres de un único byte reemplazados por sus caracteres multibyte.
    • Ejemplo:
    • select to_multi_byte(’Hello’) from dual;
    • Resultado: Hello
  • 124. Funciones de Conversión
    • TO_NUMBER
    • Sintaxis
    • TO_NUMBER ( cadena[,formato[,paramnls]] )
    • Propósito
    • Convierte la cadena CHAR o VARCHAR2 a un valor de tipo NUMBER.
    • Ejemplo:
    • select to_number(’$123.45’,’$999.99’) from dual;
    • Resultado: 123,45
  • 125. Funciones de Conversión
    • TO_SINGLE_BYTE
    • Sintaxis
    • TO_SINGLE_BYTE ( cadena )
    • Propósito
    • Convierte todos los caracteres multibyte de cadena a sus caracteres equivalentes de un único byte.
    • Ejemplo:
    • select to_single_byte(’Hello’) from dual;
    • Resultado: Hello
  • 126. Funciones de Grupo
    • AVG
    • Sintaxis
    • AVG ([DISTINCT|ALL] col )
    • Propósito
    • Devuelve el promedio de los valores de la columna.
    • Ejemplo:
    • select avg(salario) from consolida_mes;
    • Resultado: 330589
  • 127. Funciones de Grupo
    • COUNT
    • Sintaxis
    • COUNT (*|[DISTINCT|ALL] col )
    • Propósito
    • Devuelve el número de filas en la consulta. Si se pasa * como argumento, entonces devuelve el número total de filas. Si se utiliza, en su lugar, un elemento de lista de selección, se cuentan los valores no nulos.
    • Ejemplo:
    • select count(salario) from consolida_mes;
    • Resultado: 52
    • select count(*) from consolida_mes;
    • Resultado: 856
  • 128. Funciones de Grupo
    • GLB
    • Sintaxis
    • GLB ([DISTINCT|ALL] etiqueta )
    • Propósito
    • Devuelve la mayor cota inferior de etiqueta .
    • Esta función sólo tiene sentido en Trusted Oracle.
  • 129. Funciones de Grupo
    • LUB
    • Sintaxis
    • LUB ([DISTINCT|ALL] etiqueta )
    • Propósito
    • Devuelve la menor cota inferior de etiqueta .
    • Esta función sólo tiene sentido en Trusted Oracle.
  • 130. Funciones de Grupo
    • MAX
    • Sintaxis
    • MAX ([DISTINCT|ALL] col )
    • Propósito
    • Devuelve el valor máximo del elemento de la lista de selección.
    • Ejemplo:
    • select max(salario) from consolida_mes;
    • Resultado: 586245
  • 131. Funciones de Grupo
    • MIN
    • Sintaxis
    • MIN ([DISTINCT|ALL] col )
    • Propósito
    • Devuelve el valor mínimo del elemento de la lista de selección.
    • Ejemplo:
    • select min(salario) from consolida_mes;
    • Resultado: 125685
  • 132. Funciones de Grupo
    • STDDEV
    • Sintaxis
    • STDDEV ([DISTINCT|ALL] col )
    • Propósito
    • Devuelve la desviación estándar del elemento de la lista de selección.
    • Ejemplo:
    • select stddev(salario) from consolida_mes;
    • Resultado: 422.19664
  • 133. Funciones de Grupo
    • SUM
    • Sintaxis
    • SUM ([DISTINCT|ALL] col )
    • Propósito
    • Devuelve la suma de los valores para el elemento de la lista de selección.
    • Ejemplo:
    • select sum(salario) from consolida_mes;
    • Resultado: 15468958
  • 134. Funciones de Grupo
    • VARIANCE
    • Sintaxis
    • VARIANCE ([DISTINCT|ALL] col )
    • Propósito
    • Devuelve la varianza estadística del elemento de la lista de selección.
    • Ejemplo:
    • select variance(salario) from consolida_mes;
    • Resultado: 178250
  • 135. Otras Funciones
    • BFILENAME
    • Sintaxis
    • BFILENAME ( directorio, nombre_archivo )
    • Propósito
    • Devuelve el localizador BFILE asociado con el archivo físico nombre_archivo en el sistema operativo; directorio debe ser un objeto del tipo DIRECTORY en el diccionario de datos.
  • 136. Otras Funciones
    • DECODE
    • Sintaxis
    • DECODE ( expr_base, compara1, valor1,
    • compara2, valor2,
    • .....
    • predeterminado )
    • Propósito
    • La función DECODE es similar a una serie de órdenes IF-THEN-ELSE.
    • Ejemplo:
    • select decode(‘abc’,’a’,1,’abc’,2,3) from dual;
    • Resultado: 2
  • 137. Otras Funciones
    • DUMP
    • Sintaxis
    • DUMP ( expr [, formato _ num [, pos_inicio [, longitud ]]]
    • Propósito
    • Devuelve un valor VARCHAR2 que contiene información acerce de la representación interna de expr .
    • Ejemplo:
    • select decode(‘abc’,’a’,1,’abc’,2,3) from dual;
    • Resultado: 2
  • 138. Otras Funciones
    • EMPTY_CLOB/EMPTY_BLOB
    • Sintaxis
    • EMPTY_CLOB
    • EMPTY_BLOB
    • Propósito
    • Devuelve un localizador LOB vacío. EMPTY_CLOB devuelve un localizador de carácter, mientras que EMPTY_BLOB devuelve un localizador binario.
  • 139. OTRAS Funciones
    • GREATEST
    • Sintaxis
    • GREATEST ( expr1[,expr2].. )
    • Propósito
    • Devuelve la expresión con mayor valor de todos sus argumentos.
    • Ejemplo:
    • select greatest(10,’7’,’3’) from dual;
    • Resultado: 10
  • 140. OTRAS Funciones
    • GREATEST_LB
    • Sintaxis
    • GREATESTLB ( etiqueta1[,etiqueta2].. )
    • Propósito
    • Devuelve la mayor cota inferior de la lista de etiquetas.
    • Esta función sólo es valida en Trusted Oracle.
  • 141. OTRAS Funciones
    • LEAST
    • Sintaxis
    • LEAST ( expr1[,expr2].. )
    • Propósito
    • Devuelve la expresión con menor valor de todos sus argumentos.
    • Ejemplo:
    • select least(10,’7’,’3’) from dual;
    • Resultado: 3
  • 142. OTRAS Funciones
    • LEAST_UB
    • Sintaxis
    • LEAST_UB ( etiqueta1[,etiqueta2].. )
    • Propósito
    • Devuelve la menor cota inferior de la lista de etiquetas.
    • Esta función sólo es valida en Trusted Oracle.
  • 143. OTRAS Funciones
    • NVL
    • Sintaxis
    • NVL ( expr1[,expr2].. )
    • Propósito
    • Si el valor de expr1 es NULL, la función devuelve el valor de expr2 ; si no, devuelve el valor de expr1 .
    • Ejemplo:
    • select nvl(NULL,7) from dual;
    • Resultado: 7
  • 144. OTRAS Funciones
    • UID
    • Sintaxis
    • UID
    • Propósito
    • Devuelve un entero que identifica unívocamente al usuario actual de la base de datos.
    • Ejemplo:
    • select uid from dual;
    • Resultado: 7
  • 145. OTRAS Funciones
    • USER
    • Sintaxis
    • USER
    • Propósito
    • Devuelve un valor VARCHAR2 que contiene el nombre de usuario actual de oracle.
    • Ejemplo:
    • select user from dual;
    • Resultado: CLOOAVALVERDE
  • 146. OTRAS Funciones
    • USERENV
    • Sintaxis
    • USERENV( opción )
    • Propósito
    • Devuelve un valor VARCHAR2 que contiene información acerca de la sesión actual, según la opcion seleccionada. Las opciones son:
    • OSDBA,LABEL,LANGUAGE,TERMINAL,
    • SESSIONID,ENTRYID,LANG
  • 147. OTRAS Funciones
    • VSIZE
    • Sintaxis
    • VSIZE( valor )
    • Propósito
    • Devuelve el número de bytes en la representación interna de valor.
  • 148. CURSORES
    • QUE ES UN CURSOR ?
    • Oracle asigna un área de memoria que recibe el nombre de área de contexto . Un cursor es un puntero al área de contexto. Mediante el cursor, un programa PL/SQL puede controlar el área de contexto y lo que en ella suceda a medida que se procesa la orden.
  • 149. Procesamiento de los cursores explícitos
    • Pasos:
    • Declaración del cursor.
    • Apertura del cursor para una consulta.
    • Recogida de los resultados en variables PL/SQL.
    • Cierre del cursor.
  • 150. Procesamiento de los cursores explícitos
    • Declaración del cursor
    • La declaración de un cursor define su nombre, y asocia el cursor con una orden SELECT
    • Sintaxis
    • CURSOR nombre_cursor IS orden _SELECT;
    • Ejemplo
    • DECLARE
      • CURSOR cur_consolida_mes is
      • SELECT consolida_mes .*, ROWIDTOCHAR ( rowid ) fila
      • FROM consolida_mes
      • WHERE consolida_mes . NMRO_DCLRA >= '0‘;
  • 151. Procesamiento de los cursores explícitos
    • Apertura del Cursor
    • Cuando se abre un cursor, suceden tres cosas:
    • Se examinan los valores de las variables acopladas.
    • Se determina el conjunto activo.
    • Se hace apuntar el puntero del conjunto activo a la primera fila.
    • Sintaxis
    • OPEN nombre_cursor ;
  • 152. Procesamiento de los cursores explícitos
    • Extracción de los datos de un cursor
    • La cláusula INTO de la consulta es parte de la orden FETCH.
    • SINTAXIS
    • FETCH nombre _ cursor INTO lista _ variables ;
    • FETCH nombre _ cursor INTO registro_PL/SQL ;
    • Ejemplo
    • DECLARE
    • CURSOR c_carga_datos IS
    • SELECT * FROM carga_datos ;
    • v_carga_datos c_carga_datos %ROWTYPE;
    • BEGIN
    • OPEN c_carga_datos ;
    • FETCH c_carga_datos INTO v_carga_datos ;
    • ...
    • END;
  • 153. Procesamiento de los cursores explícitos
    • Cierre de un cursor
    • Cuando se ha terminado de extraer el conjunto activo, debe cerrarse el cursor, cuando se cierra se liberan los recursos asociados con él.
    • SINTAXIS
    • CLOSE nombre _ cursor ;
    • Ejemplo
    • DECLARE
    • CURSOR c_carga_datos IS
    • SELECT * FROM carga_datos ;
    • v_carga_datos c_carga_datos %ROWTYPE;
    • BEGIN
    • OPEN c_carga_datos ;
    • FETCH c_carga_datos INTO v_carga_datos ;
    • ...
    • CLOSE c_carga_datos;
    • END;
  • 154. Procesamiento de los cursores explícitos
    • Atributos de los cursores
    • Los atributos de cursor son:
    • %FOUND : Devuelve TRUE si la última orden FETCH devolvió una fila.
    • %NOTFOUND :Devuelve FALSE si la última orden FETCH devolvió una fila.
    • %ISOPEN : Si el cursor está abierto devuelve TRUE.
    • %ROWCOUNT : Devuelve el número de filas extraídas por el cursor.
  • 155. Procesamiento de los cursores explícitos
    • Comparación entre los atributos de los cursores
    2 TRUE TRUE FALSE Fetch no devolvió dato ORA-1001 FALSE ORA-1001 ORA-1001 Cursor Cerrado 2 TRUE FALSE TRUE Segunda fila extraída 1 TRUE FALSE TRUE Primera fila extraída 0 TRUE NULL NULL Cursor ha sido abierto ORA-1001 FALSE ORA-1001 ORA-1001 Cursor no abierto %ROWCOUNT %ISOPEN %NOTFOUND %FOUND
  • 156. Procesamiento de los cursores explícitos
    • Cursores parametrizados
    • El cursor parametrizado es aquel que admite argumentos.
    • Ejemplo
    • DECLARE
    • CURSOR c_carga_datos ( p_tip_ide_ben carga_datos . tip_ide_ben %TYPE,
    • p_nro_ide_ben carga_datos . nro_ide_ben %TYPE) IS
    • SELECT * FROM carga_datos
    • WHERE tip_ide_ben = p_tip_ide_ben
    • AND nro_ide_ben = p_nro_ide_ben ;
    • BEGIN
    • OPEN c_carga_datos ( 'CC' , 14890615 );
    • FETCH c_carga_datos INTO v_carga_datos ;
    • ...
    • CLOSE c_carga_datos ;
    • END;
  • 157. Procesamiento de los cursores implícitos
    • A diferencia de los cursores explícitos, el programa no abre ni cierra el cursor SQL, sino que PL/SQL lo abre de modo implícito, procesa la orden SQL en él contenida, y cierra el cursor después.
    • El cursor implícito sirve para procesar las órdenes INSERT, UPDATE, DELETE, y las órdenes SELECT..INTO de una sola fila.
  • 158. Ciclos de extracción mediante cursor
    • Bucles Simples
    • Sintaxis:
    • LOOP..END LOOP;
    • Ejemplo:
    • DECLARE
    • CURSOR c_carga_datos ( p_tip_ide_ben carga_datos . tip_ide_ben %TYPE,
    • p_nro_ide_ben carga_datos . nro_ide_ben %TYPE) IS
    • SELECT * FROM carga_datos
    • WHERE tip_ide_ben = p_tip_ide_ben
    • AND nro_ide_ben = p_nro_ide_ben ;
    • BEGIN
    • OPEN c_carga_datos ( 'CC' , 14890615 );
    • LOOP
    • FETCH c_carga_datos INTO v_carga_datos ;
    • EXIT WHEN c_carga_datos %NOTFOUND;
    • ...
    • END LOOP ;
    • CLOSE c_carga_datos ;
    • END;
  • 159. Ciclos de extracción mediante cursor
    • CICLO WHILE
    • Sintaxis:
    • WHILE..LOOP;
    • Ejemplo:
    • DECLARE
    • CURSOR c_carga_datos ( p_tip_ide_ben carga_datos . tip_ide_ben %TYPE,
    • p_nro_ide_ben carga_datos . nro_ide_ben %TYPE) IS
    • SELECT * FROM carga_datos
    • WHERE tip_ide_ben = p_tip_ide_ben
    • AND nro_ide_ben = p_nro_ide_ben ;
    • BEGIN
    • OPEN c_carga_datos ( 'CC' , 14890615 );
    • FETCH c_carga_datos INTO v_carga_datos ;
    • WHILE c_carga_datos %FOUND LOOP;
    • ...
    • FETCH c_carga_datos INTO v_carga_datos ;
    • END LOOP ;
    • CLOSE c_carga_datos ;
    • END;
  • 160. Ciclos de extracción mediante cursor
    • CICLO WHILE
    • Sintaxis:
    • FOR..IN..LOOP;
    • Ejemplo:
    • DECLARE
    • CURSOR c_carga_datos ( p_tip_ide_ben carga_datos . tip_ide_ben %TYPE,
    • p_nro_ide_ben carga_datos . nro_ide_ben %TYPE) IS
    • SELECT * FROM carga_datos
    • WHERE tip_ide_ben = p_tip_ide_ben
    • AND nro_ide_ben = p_nro_ide_ben ;
    • BEGIN
    • FOR v_identi IN c_carga_datos LOOP;
    • ...
    • END LOOP ;
    • END;
  • 161. Cursores SELECT FOR UPDATE
    • Declaración del cursor
    • A menudo, el procesamiento que se lleva a cabo en un bucle de extracción modifica las filas extraídas por el cursor.
    • FOR UPDATE
    • Sintaxis
    • SELECT..FROM..FOR UPDATE [OF referencia_columna][NOWAIT];
    • Ejemplo
    • DECLARE
      • CURSOR cur_consolida_mes is
      • SELECT *
      • FROM consolida_mes
      • FOR UPDATE OF valor_upc ;
  • 162. Cursores SELECT FOR UPDATE
    • WHERE CURRENT OF
    • La cláusula WHERE CURRENT OF puede emplearse en una orden UPDATE o DELETE.
    • Sintaxis
    • WHERE CURRENT OF cursor ;
    • Ejemplo
      • UPDATE consolida_mes SET valor_upc = 50000 ;
      • WHERE CURRENT OF cur_consolida;
  • 163. Variables de Cursor
    • Una variable de cursor puede asociarse con diferentes órdenes en tiempo de ejecución. Las variables de cursor son análogas a las variables PL/SQL, que pueden contener valores diferentes en tiempo de ejecución.
    • Para poder utilizar una variable de cursor, primero es necesario declararla. Después será necesario asignarla espacio de almacenamiento en tiempo de ejecución. La apertura, extracción y cierre son similares a los cursores estáticos.
  • 164. Declaración de una variable de cursor
    • Una variable de cursor es de tipo de referencia. Para poder usar un tipo de referencia, primero es necesario declarar la variable y continuación asignarle espacio de almacenamiento. Los tipos de referencia en PL/SQL se declaran mediante:
    • REF tipo
    • Donde tipo es un tipo previamente definido.
  • 165. Declaración de una variable de cursor
    • La sintaxis completa para definir un tipo de variable de cursor es:
    • TYPE nombre_tipo IS REF CURSOR RETURN tipo_retorno ;
    • Donde nombre_tipo es el nombre del nuevo tipo de referencia, y tipo_retorno es un tipo de registro, que indica los tipos de la lista de selección que será eventualmente devuelta por la variable de cursor. El tipo de retorno de una variable debe ser de tipo registro.
  • 166. Muchas Gracias http:// luisgpalomino . blogspot . com /