Bases de Datos                   Unidad          El Lenguaje PL/SQL          (Funciones)            2011   Erwin Fischer   2
Funciones • Uso de funciones de conversión   y expresiones de condicionales             2011   Erwin Fischer   3
Usando la tabla dual deOracle • La tabla dual de Oracle se utiliza   cuando se necesita ejecutar una   instrucción SQL que...
Usando dual • select sysdate from dual; • ¿Qué día de la semana nació   usted?   select   to_char(to_date(‘09-SEP-1958,dd-...
Recordando %TYPEcreate procedure update_emp (empid in number)is v_empid number; v_fname varchar2(20); v_lname varchar2(30)...
Recordando %TYPEcreate procedure update_emp (empid in number)is v_empid employees.employee_id%type; v_fname employees.firs...
En Proceso de registros begin  select employee_id,first_name,  last_name, hire_date, salary  into v_empid, v_fname,  v_lna...
Declarando un tipo RECORD create procedure update_emp (empid in number) is --declare TYPE emp_record_type IS RECORD (v_emp...
Finalmente tenemos Begin  select employee_id,  first_name, last_name,  hire_date, salary into emp_record  from employees  ...
Creando tablas parapruebas create table tx (x int,y varchar(5)); insert into tx select rownum,   trunc(dbms_random.value(1...
FUNCIONES DE CONVERSIÓNTO_CHAR:Transforma un tipo DATE ó NUMBER en una cadena decaracteres. Ejemplos:      to_char(45.31, ...
FUNCIONES QUE DEVUELVEN VALORESNUMÉRICOSASCII(cad)= Devuelve el valor ASCII de la primera letrade la cadena "cad". Ejemplo...
Ejemplosselect R=,ASCII(R), r=, ASCII(r)from dual;select INSTR(CORPORATE FLOOR,OR, 3, 2)from dual;select LENGTH (HOLA nund...
FUNCIONES PARA EL MANEJO DEFECHASSYSDATE= Devuelve la fecha del sistema.ADD_MONTHS (fecha, n)= Devuelve la fecha "fecha"in...
Ejemplos de Funciones para el manejo de fechasselect sysdatefrom dual;select sysdate, add_months(sysdate, 3)from dual;sele...
FUNCIONES QUE DEVUELVENVALORES DE CARACTERESCHR(n) = Devuelve el carácter cuyo valor en binario esequivalente a "n".CONCAT...
FUNCIONES QUE DEVUELVENVALORES DE CARACTERESLTRIM (cad [,set])= Suprime un conjunto de caracteresa la izquierda de la cade...
ltrim(000123, 0);ltrim(123123Tech, 123);ltrim(123123Tech123, 123); ltrim(xyxzyyyTech, xyz);ltrim(6372Tech, 0123456789);rtr...
FUNCIONES DE GRUPOS DEVALORESAVG(n)= Calcula el valor medio de "n" ignorando los valoresnulos.COUNT (* | Expresión)= Cuent...
ejemplos select greatest(20, 10, 7, 5) from dual select least(20, 10, 7, 5) from dual select max(salary) from employees se...
FUNCIONES DE VALORES SIMPLESABS(n)= Devuelve el valor absoluto de (n).CEIL(n)=Obtiene el valor entero inmediatamente super...
Ej:  select ceil(23.56)  from dual  select floor(23.56)  from dual  select mod(25,2)  from dual  select power(2,3)  from d...
FUNCIONES DE VALORESSIMPLESROUND (numero [, m])= Redondea números con elnumero de dígitos de precisión indicados.SIGN (val...
select ROUND (123.345, 2)from dualselect SIGN (-35.27)from dualselect SQRT(16)from dualselect TRUNC (123.345, 2)from duals...
FUNCIONES AVANZADASDECODE(expr, value1 [, return1, value2, return2....,]default ):Traduce una expresión a un valor de reto...
ej     SELECT DEPARTMENT_ID,     decode(DEPARTMENT_ID,          60, Ventas,          70, RRHH,          80, MKT,          ...
FUNCIONES AVANZADASCASE: La expresión CASE permite utilizar la lógica IF-THEN-ELSE en sentencias SQL sin tener que invocar...
EJ:select SALARY,CASE  WHEN SALARY < 4000 THEN ‘GANA POCO  WHEN sALARY >= 4000 AND SALARY < 5000 THEN ‘GANA BIEN  ELSE GAN...
FUNCIONESCREATE [OR REPLACE] FUNCTION function_name    [ (parameter [,parameter]) ]    RETURN return_datatypeIS | AS    [d...
Built-InFunctions (By Category)                  2011   Erwin Fischer   32
Tarea : Cree la funciónParImpar Escriba una función que reciba un numero entero y Retorne un texto indicando si es „par‟ o...
Unidad - PL/SQL        • Fin            2011   Erwin Fischer   34
Upcoming SlideShare
Loading in …5
×

Funciones

2,537 views

Published on

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,537
On SlideShare
0
From Embeds
0
Number of Embeds
48
Actions
Shares
0
Downloads
88
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Funciones

  1. 1. Bases de Datos Unidad El Lenguaje PL/SQL (Funciones) 2011 Erwin Fischer 2
  2. 2. Funciones • Uso de funciones de conversión y expresiones de condicionales 2011 Erwin Fischer 3
  3. 3. Usando la tabla dual deOracle • La tabla dual de Oracle se utiliza cuando se necesita ejecutar una instrucción SQL que no necesariamente tiene una tabla asociada. • Select user from dual; 2011 Erwin Fischer 5
  4. 4. Usando dual • select sysdate from dual; • ¿Qué día de la semana nació usted? select to_char(to_date(‘09-SEP-1958,dd-mon- yyyy),day) from dual; 2011 Erwin Fischer 6
  5. 5. Recordando %TYPEcreate procedure update_emp (empid in number)is v_empid number; v_fname varchar2(20); v_lname varchar2(30); v_hire date; v_sal number;begin-- Proceso de registrosend; 2011 Erwin Fischer 7
  6. 6. Recordando %TYPEcreate procedure update_emp (empid in number)is v_empid employees.employee_id%type; v_fname employees.first_name%type; v_lname employees.last_name%type; v_hire employees.hire_date%type; v_sal employees.salary%type;begin--Proceso de registrosend; 2011 Erwin Fischer 8
  7. 7. En Proceso de registros begin select employee_id,first_name, last_name, hire_date, salary into v_empid, v_fname, v_lname, v_hire, v_sal from employees where employee_id = empid; --continuar el proceso… end; 2011 Erwin Fischer 9
  8. 8. Declarando un tipo RECORD create procedure update_emp (empid in number) is --declare TYPE emp_record_type IS RECORD (v_empid employees.employee_id%type; v_fname employees.first_name%type; v_lname employees.last_name%type; v_hire employees.hire_date%type; v_sal employees.salary%type; ); --instantiate emp_record emp_record_type; begin ... 2011 Erwin Fischer 10
  9. 9. Finalmente tenemos Begin select employee_id, first_name, last_name, hire_date, salary into emp_record from employees where employee_id = empid; -- continuar el proceso… end; 2011 Erwin Fischer 11
  10. 10. Creando tablas parapruebas create table tx (x int,y varchar(5)); insert into tx select rownum, trunc(dbms_random.value(1,99999)) from dual connect by rownum <= 10; select * from tx; 2011 Erwin Fischer 12
  11. 11. FUNCIONES DE CONVERSIÓNTO_CHAR:Transforma un tipo DATE ó NUMBER en una cadena decaracteres. Ejemplos: to_char(45.31, 99.9)  retorna 45.3 to_char(9,125.33, 9,999.99)  retorna 9,125.33 to_char(77, 0099)  retorna 0077TO_DATE:Transforma un tipo NUMBER ó CHAR en DATE.Ejemplo: to_date(31/10/2007,DD/MM/YYYY„)  retorna „31/10/2007‟TO_NUMBER:Transforma una cadena de caracteres en NUMBER.Ejemplo: to_number(123)  retorna 123 2011 Erwin Fischer 13
  12. 12. FUNCIONES QUE DEVUELVEN VALORESNUMÉRICOSASCII(cad)= Devuelve el valor ASCII de la primera letrade la cadena "cad". Ejemplo: ASCII(R)  Retorna 82INSTR (cad1, cad2 [, comienzo [,m]])= Permite unabúsqueda de un conjunto de caracteres en una cadenapero no suprime ningún carácter después. Ejemplo: INSTR(CORPORATE FLOOR,OR, 3, 2) El resultado obtenido es 14, busca la segunda ocurrencia de la cadena OR a partir de la tercer posiciónLENGTH (cad)= Devuelve el numero de caracteres de cad.Ejemplo: LENGTH(„HOLA‟) retorna 4 2011 Erwin Fischer 14
  13. 13. Ejemplosselect R=,ASCII(R), r=, ASCII(r)from dual;select INSTR(CORPORATE FLOOR,OR, 3, 2)from dual;select LENGTH (HOLA nundo)from dual; 2011 Erwin Fischer 15
  14. 14. FUNCIONES PARA EL MANEJO DEFECHASSYSDATE= Devuelve la fecha del sistema.ADD_MONTHS (fecha, n)= Devuelve la fecha "fecha"incrementada en "n" meses.LAST_DAY (fecha)= Devuelve la fecha del último día delmes que contiene "fecha".MONTHS_BETWEEN (fecha1, fecha2)= Devuelve ladiferencia en meses entre las fechas "fecha1" y "fecha2".NEXT_DAY (fecha, “cad”= Devuelve la fecha del primerdía de la semana indicado por "cad" después de la fechaindicada por "fecha“, donde cad corresponde al día de lasemana EJ: „sábado’ 2011 Erwin Fischer 16
  15. 15. Ejemplos de Funciones para el manejo de fechasselect sysdatefrom dual;select sysdate, add_months(sysdate, 3)from dual;select sysdate, last_day(sysdate)from dual;select months_between(sysdate, 1/1/2011)from dual;select next_day(sysdate,sábado)from dual; 2011 Erwin Fischer 17
  16. 16. FUNCIONES QUE DEVUELVENVALORES DE CARACTERESCHR(n) = Devuelve el carácter cuyo valor en binario esequivalente a "n".CONCAT (cad1, cad2)= Devuelve "cad1" concatenadacon "cad2".LOWER (cad)= Devuelve la cadena "cad" en minúsculas.UPPER (cad)= Devuelve la cadena "cad" en mayúsculas.INITCAP (cad)= Convierte la cadena "cad" a tipo titulo.LPAD (cad1, n[,cad2])= Añade caracteres a la izquierdade la cadena hasta que tiene una cierta longitud.RPAD (cad1, n[,cad2])= Añade caracteres a la derechade la cadena hasta que tiene una cierta longitud. 2011 Erwin Fischer 18
  17. 17. FUNCIONES QUE DEVUELVENVALORES DE CARACTERESLTRIM (cad [,set])= Suprime un conjunto de caracteresa la izquierda de la cadena.RTRIM (cad [,set])= Suprime un conjunto de caracteresa la derecha de la cadena.REPLACE (cad, cadena_busqueda [,cadena_sustitucion])= Sustituye un carácter ocaracteres de una cadena con 0 o más caracteres.SUBSTR (cad, m [,n])= Obtiene parte de una cadena.TRANSLATE (cad1, cad2, cad3)= Convierte caracteresde una cadena en caracteres diferentes, según un plan desustitución marcado por el usuario. 2011 Erwin Fischer 19
  18. 18. ltrim(000123, 0);ltrim(123123Tech, 123);ltrim(123123Tech123, 123); ltrim(xyxzyyyTech, xyz);ltrim(6372Tech, 0123456789);rtrim(Techxyxzyyy, xyz);rtrim(Tech6372, 0123456789); 2011 Erwin Fischer 20
  19. 19. FUNCIONES DE GRUPOS DEVALORESAVG(n)= Calcula el valor medio de "n" ignorando los valoresnulos.COUNT (* | Expresión)= Cuenta el número de veces que laexpresión evalúa algún dato con valor no nulo. La opción "*"cuenta todas las filas seleccionadas.MAX (expresión)= Calcula el máximo.MIN (expresión)= Calcula el mínimo.SUM (expresión)= Obtiene la suma de los valores de laexpresión.GREATEST (valor1, valor2…)= Obtiene el mayor valor de lalista.LEAST (valor1, valor2…)= Obtiene el menor valor de la lista. 2011 Erwin Fischer 21
  20. 20. ejemplos select greatest(20, 10, 7, 5) from dual select least(20, 10, 7, 5) from dual select max(salary) from employees select COUNT (*) from employees select sum(salary) from employees 2011 Erwin Fischer 22
  21. 21. FUNCIONES DE VALORES SIMPLESABS(n)= Devuelve el valor absoluto de (n).CEIL(n)=Obtiene el valor entero inmediatamente superioro igual a "n".FLOOR(n) = Devuelve el valor entero inmediatamenteinferior o igual a "n".MOD (m, n)= Devuelve el resto resultante de dividir "m"entre "n".NVL (valor, expresión)= Sustituye un valor nulo por otrovalor.POWER (m, exponente)= Calcula la potencia de unnumero. 2011 Erwin Fischer 23
  22. 22. Ej: select ceil(23.56) from dual select floor(23.56) from dual select mod(25,2) from dual select power(2,3) from dual select NVL(commission, 0) from sales; 2011 Erwin Fischer 24
  23. 23. FUNCIONES DE VALORESSIMPLESROUND (numero [, m])= Redondea números con elnumero de dígitos de precisión indicados.SIGN (valor)= Indica el signo del "valor".SQRT(n)= Devuelve la raíz cuadrada de "n".TRUNC (numero, [m])= Trunca números para que tenganuna cierta cantidad de dígitos de precisión.VARIANCE (valor)= Devuelve la varianza de un conjuntode valores. 2011 Erwin Fischer 25
  24. 24. select ROUND (123.345, 2)from dualselect SIGN (-35.27)from dualselect SQRT(16)from dualselect TRUNC (123.345, 2)from dualselect VARIANCE (salary)from employees 2011 Erwin Fischer 26
  25. 25. FUNCIONES AVANZADASDECODE(expr, value1 [, return1, value2, return2....,]default ):Traduce una expresión a un valor de retorno. Si expr esigual a value1, la función devuelve Return1. Si expr esigual a value2, la función devuelve Return2. Y asísucesivamente. Si expr no es igual a ningún valor lafunción devuelve el valor por defecto. 2011 Erwin Fischer 27
  26. 26. ej SELECT DEPARTMENT_ID, decode(DEPARTMENT_ID, 60, Ventas, 70, RRHH, 80, MKT, 90, Produccion, 100, Servicios Generales, No definido) FROM employees; 2011 Erwin Fischer 28
  27. 27. FUNCIONES AVANZADASCASE: La expresión CASE permite utilizar la lógica IF-THEN-ELSE en sentencias SQL sin tener que invocarprocedimientos. CASE expr WHEN comparison_expr1 THEN return_expr1 [ WHEN comparison_expr2 THEN return_expr2 WHEN comparison_exprn THEN return_exprn ELSE else_expr ] END 2011 Erwin Fischer 29
  28. 28. EJ:select SALARY,CASE WHEN SALARY < 4000 THEN ‘GANA POCO WHEN sALARY >= 4000 AND SALARY < 5000 THEN ‘GANA BIEN ELSE GANA MUCHOENDfrom EMPLOYEES; 2011 Erwin Fischer 30
  29. 29. FUNCIONESCREATE [OR REPLACE] FUNCTION function_name [ (parameter [,parameter]) ] RETURN return_datatypeIS | AS [declaration_section]BEGIN executable_section[EXCEPTION exception_section]END [function_name]; 2011 Erwin Fischer 31
  30. 30. Built-InFunctions (By Category) 2011 Erwin Fischer 32
  31. 31. Tarea : Cree la funciónParImpar Escriba una función que reciba un numero entero y Retorne un texto indicando si es „par‟ o „impar‟ 2011 Erwin Fischer 33
  32. 32. Unidad - PL/SQL • Fin 2011 Erwin Fischer 34

×