FUNCIONES PROPIAS DE ORACLE

INTRODUCCION
 

Un de las funciones es manejar la base de datos relacional que hace uso de los recursos del sistema informático en todas las arquitecturas de hardware, para garantizar su aprovechamiento al máximo en ambientes cargados de información.
 
Modificar las estructuras creadas, si es necesario, partiendo de la información que
 
proporcionan los desarrolladores.
 
Mejorar los tiempos de respuesta y controlar el rendimiento como creación y mantenimiento de usuarios. Seguridad del sistema y monitorizar el acceso de usuarios a la base de datos, planificar la estrategia de recuperación y realizar las recuperaciones, contactar con el distribuidor para problemas técnicos que no pueda resolver.
 
OBJETIVOS

Este nos permite Generar lo siguiente como Nombre, atributos y sus propiedades Estadísticas De ejecución: bloques libres, espacio ocupado, número de filas, tamaños. Almacenar bloques de rehacer (redo) también Almacenamiento: Tamaño inicial y de incremento, % espacio libre, restricciones de las tablas: clave primaria y ajena cada instancia tiene parámetros : sobre que datos se trabaja, en que disco, memoria utilizada, etc.
 
Almacena el concepto de vista del SQL: agrupar el resultado de una consulta como una tabla nueva se puede usar luego como una tabla en sí.
 

FUNCIONES PROPIAS DE ORACLE
 
Estas instrucciones suponen la ejecución automática por parte del «gateway» de los siguientes pasos:

  • CREATE DATABASE -> CONNECT + CREATE MULTIBASE CATALOGS
  • DROP DATABASE -> DISCONNECT + DROP MULTIBASE CATALOGS
  • START DATABASE -> CONNECT 
  • DATABASE -> CONNECT
 
Siendo CREATE MULTIBASE CATALOGS y DROP MULTIBASE CATALOGS instrucciones nuevas de MultiWay (disponibles para el programador), y CONNECT y DISCONNECT instrucciones internas para el gestor de Oracle.
 
close database
 
call putenv ("ORACLE_UID",,1)
 
database ;
 
CREATE TABLE.
 
El atributo NOT NULL se mantiene directamente por el SQL de Oracle.
 
El atributo DEFAULT es simulado también por el «gateway» en las operaciones de INSERT cuyos valores en «VALUES» se introduzcan a través de constantes o variables «hosts» (esto se hace extensivo al FORM).
 
Restricciones de funcionalidad:
 
Respecto al atributo DEFAULT, la simulación no funciona cuando los valores se introducen a través de una instrucción SELECT, ya que no puede controlarse su resultado («INSERT… SELECT…»).
 
El resto de atributos (entre ellos CHECK (RIGHT, ZEROFILL,) y la clave referencial se aceptan gramaticalmente, pero no funcionan a nivel de SQL.
 
CREATE TEMP TABLE.
 
Lo mismo sucede con la tabla temporal de la instrucción «SELECT… INTO TEMP…».CREATE INDEX.
 
Restricción de funcionalidad: El atributo «DESC» no es efectivo, ya que los índices son siempre ascendentes.
 
 ALTER TABLE.
 
Dado que esta instrucción es desconocida por el SQL de Oracle, el «gateway» la simula para que, de forma transparente, el programador pueda seguir usándola.
  
CREATE TEMP TABLE (instrucción simulada a su vez)
 
INSERT INTO SELECT FROM
 
DROP TABLE
 
RENAME TABLE TO
 
CREATE INDEX ON… (los índices que tuviera la tabla)
 
GRANT CONNECT.
 
Para evitar esta incompatibilidad, el «gateway» añade al final de la misma la cláusula «IDENTIFIED BY», y como «password» sigue el criterio de utilizar el mismo identificador empleado en el nombre de usuario.
 
 GRANT SELECT
  
No funciona la opción «GRANT SELECT (... )…», sino únicamente «GRANT SELECT…», sin especificación de columnas.
 
INSERT.
 
La inserción automática para el tipo de dato SERIAL (inexistente en Oracle) se simula en parte gracias a una tabla creada a tal efecto («MBSERIAL»), de donde el «gateway» lee el último valor que asignó de esta forma (por cada tabla con una columna de este tipo, existe una fila con dicho valor).
 
FETCH CURSOR.
 
Restricciones de funcionalidad:
 
En MultiBase, todos los «cursores» permiten el acceso a las filas siguiente, anterior, primera y última (NEXT, PREVIOUS, FIRST, LAST).
  
LOCK TABLE.
 
La instrucción LOCK TABLE será capaz de bloquear una tabla si la variable de configuración MBCOMMIT tiene el valor «OFF» (en el fichero «gworacle.env»), ya que este «COMMIT» automático después de cada instrucción SQL desbloquea las tablas cuando MultiBase funciona frente al SQL de Oracle.
 
OPEN CURSOR.
 
Los identificadores de CURSOR tendrán como máximo 15 caracteres en lugar de 18 (máximo permitido por CTSQL para cualquier identificador de la base de datos frente a cualquier SQL). Esta restricción permite distinguir «cursores» con igual nombre en diferentes módulos CTL, aspecto éste que sólo sabe manejar el CTSQL.
 
SELECT… FROM
 
NOTA al programador: El «gateway» está simulando el comportamiento de CTSQL en un «SELECT {MIN,MAX,AVG,SUM}» sin «GROUP BY» (ya que Oracle devuelve una fila con valor «NULL» si el número de filas seleccionadas es cero, mientras que CTSQL no devuelve nada), con la salvedad de que el programador no puede distinguir el caso de una selección de filas con valores nulos (aunque esto no es habitual).
 
ROLLFORWARD DATABASE y UPDATE STATISTICS.
  
Al no tener equivalencia en Oracle, estas instrucciones no son enviadas a su SQL por el «gateway», con lo que sus efectos son nulos aunque se utilicen en programas CTL, favoreciendo de esta manera la compatibilidad de fuentes frente a distintos servidores de bases de datos.
 
UNLOCK TABLE.
 
Esta instrucción es ignorada por el «gateway», ya que Oracle no la contempla. Para conseguir el desbloqueo de una tabla ha de realizarse un «COMMIT» de la transacción dentro de la cual se hizo el bloqueo (para más información vea lo comentado anteriormente para la instrucción LOCK TABLE).
 
Catálogo de MultiBase: Es posible romper la relación «biunívoca» existente entre bases de datos MultiBase y usuarios Oracle.
 
EXECSQL GRANT ALL PRIVILEGES ON MBSERIAL TO PUBLIC
 
cada uno de los usuarios, excepto el creador del catálogo, necesita el siguiente sinónimo:
 
EXECSQL CREATE SYNONYM mbserial
 
FOR usuario_creador.mbserial
 
Este procedimiento podría seguirse también con las tablas del entorno de programación (tablas «ep*»).
 
Las funciones de una sola fila:
 
function_name[(arg1, arg2,...)]
 
Funciones de Caracteres LOWER
 
Funciones de manipulación de mayúsculas/minúsculas de caracteres
 
LOWER – UPPER - INITCAP
 
CONCAT – SUBSTR – LENGTH – INSTR - LPAD
RPAD – TRIM - REPLACE
 
Estas funciones convierten las mayúsculas/minúsculas para cadenas de caracteres.
 
Funcion Result
 
LOWER('SQL Course') sql course
 
UPPER('SQL Course') SQL COURSE
 
INITCAP('SQL Course') Sql Course
 
Uso de Funciones de Manipulación de Mayúsculas/Minúsculas
 
Muestre el número de empleado, el nombre y el número de departamento para el empleado Higgins
 
SELECT employee_id, last_name, department_id
 
FROM
 
employees
 
WHERE last_name = 'higgins';
 
no rows selected
 
SELECT employee_id, last_name, department_id
 
FROM
 
employees
 
WHERE LOWER(last_name) = 'higgins';
 
Funciones de Manipulación de Caracteres
 
CONCAT('Hello', 'World')
 
SUBSTR('HelloWorld',1,5)
 
LENGTH('HelloWorld')
 
INSTR('HelloWorld', 'W')
 
LPAD(salary,10,'*') RPAD(salary, 10, '*')
 
TRIM('H' FROM 'HelloWorld')
 
Uso de Funciones de Manipulación de Caracteres
 
Employee id , concat(first name, last_name)NAME,
 
Job_id,length(lest name),
 
Instr (lest_name, `a`) “contains ´a`?”
 
From employees
 
Were substr (job_id, 4) = `rep`;
 
Funciones Numéricas
 
ROUND: Redondea el valor a los decimales especificados.
 
ROUND(45.926, 2) 45.93
 
TRUNC: Trunca el valor a los decimales especificados.
 
TRUNC(45.926, 2) 45.92
 
MOD: Devuelve el resto de la división.
 
MOD(1600, 300) 100
 
Uso de la Función ROUND
 
Es una tabla ficticia que puede utilizar para ver los resultados de funciones y cálculos
 
SELECT ROUND(45.923,2), ROUND(45.923,0),
 
ROUND(45.923,-1)
 
FROM
 
DUAL;
 
Uso de la Función TRUNC
 
SELECT TRUNC(45.923,2) TRUNC(45.923),
 
TRUNC(45.923,-2)
 
FROM DUAL;
 
Uso de la Función MOD
 
SELECT last_name, salary, MOD(salary, 5000)
 
FROM
 
employees
 
WHERE job_id = 'SA_REP';
  
Trabajo con Fechas
 
Le permite almacenar fechas del siglo XX en el siglo XXI de la misma forma.
 
SELECT last_name, hire_date
 
FROM employees
 
WHERE last_name like 'G%';
  
Trabajo con Fechas
 
SYSDATE es una función que devuelve:
 
Fecha
 
Hora
 
Uso de Operadores Aritméticos con Fechas
 
SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS
 
FROM employees
 
WHERE department_id = 90;
 
Funciones de Fecha
 
MONTHS_BETWEEN ADD
 
MONTHS NEXT
 
DAY LAST
 
DAY
 
ROUND
 
TRUNC
 
Uso de Funciones de Fecha
 
MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')
 
ADD_MONTHS ('11-JAN-94',6)
 
NEXT_DAY ('01-SEP-95','FRIDAY')
 
LAST_DAY('01-FEB-95') 19.6774194 '11-JUL-94' '08-SEP-95' '28-FEB-95'
 
Uso de Funciones de Fecha
 
Asuma SYSDATE = '25-JUL-95':
 
ROUND (SYSDATE,'MONTH') 01-AUG-95
 
ROUND (SYSDATE,'YEAR') 01-JAN-96
 
TRUNC (SYSDATE,'MONTH') 01-JUL-95
 
TRUNC (SYSDATE,'YEAR') 01-JAN-95
 
Funciones de Conversión
 
Conversión implícita de tipos de dato
 
Conversión explícita de tipos de dato
 
Conversión de tipos de dato
 
Conversión Implícita de Tipos de Dato
 
Para las asignaciones, Oracle Server puede convertir automáticamente lo siguiente:
 
VARCHAR2 or CHAR De NUMBER
 
A VARCHAR2 or CHAR DATE
 
NUMBER VARCHAR2
 
DATE VARCHAR2
 
Conversión Implícita de Tipos de Dato
 
TO_number
 
TO_date
 
NUMBER CHARACTER DATE
 
TO CHAR
 
TO CHAR
 
Uso de la Función TO_CHAR con Fechas
  
TO_CHAR (date, 'format_model')
  
Elementos del Modelo de Formato de Fecha
 
YYYY Año completo en números
 
YEAR Años en letra
 
MM Valor de dos dígitos para el mes
 
MONTH Abreviatura de tres letras del día dela semana
 
DY Nombre completo del día de la semana
 
DAY Nombre completo del mes
 
DD Día del mes en número
 
Uso de función to_char con letras
 
last_name,
 
TO_CHAR (hire_date, 'fmDD MonthYYYY')
 
AS HIREDATE
 
FROM employees;
 
Uso de la FunciónTO_CHAR con Números
 
TO_CHAR(number, 'format_model')
 
Estos son algunos de los elementos de formato que puede utilizar con la funciónTO_CHAR para mostrar un valor numérico como carácter:
 
SELECT TO_CHAR(salary, '$99,999.00') SALARY
 
FROM
 
employees
 
WHERE last_name = 'Ernst';
 
Uso de las Funciones TO_NUMBER y TO_DATE
 
Convierta una cadena de caracteres en formato numérico utilizando la funciónTO_NUMBER:
 
TO_NUMBER(char[, 'format_model'])
 
Convierta una cadena de caracteres en formato de fecha utilizando la funciónTO_DATE:
 
TO_DATE(char[, 'format_model'])
 
Estas funciones tienen un modificadorfx que especifica la coincidencia exacta para el argumento de caracteres y un modelo de formato de fecha de una funciónTO_DATE.
 
Uso de las FuncionesTO_NUMBER y TO_DATE
 
Convierta una cadena de caracteres en formato numérico utilizando la funciónTO_NUMBER:
 
TO_NUMBER(char[, 'format_model'])
 
Convierta una cadena de caracteres en formato de fecha utilizando la funciónTO_DATE:
 
TO_DATE(char[, 'format_model'])
 
Formato de FechaRR
 
Utilice el formatoRR, que produce los mismos resultados tanto si se ejecuta el comando en 1999 o ahora:
 
SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-YYYY')
 
FROM employees
 
WHERE hire_date < TO_DATE('01-Jan-90', 'DD-Mon-RR');
 
Funciones de Anidamiento
 
F3(F2(F1(col,arg1),arg2),arg3)
 
Paso 1 = Resultado 1 Paso 2 = Resultado 2 Paso 3 = Resultado 3
 
Funciones de Anidamiento
 
SELECT last_name,
 
NVL(TO_CHAR(manager_id), 'No Manager')
 
FROM employees
 
WHERE manager_id IS NULL;
 
Funciones Generales
 
Estas funciones trabajan con cualquier tipo de dato y están relacionadas con el uso de valores nulos.
 
NVL (expr1, expr2)
 
NVL2 (expr1, expr2, expr3)
 
NULLIF (expr1, expr2)
 
COALESCE (expr1, expr2, ..., exprn)
 
Función NVL
 
Convierte un valor nulo en un valor real ye pueden utilizar son fechas, caracteres y numéricos, tipos de dato deben coincidir:
 
NVL(commission_pct,0)
 
NVL(hire_date,'01-JAN-97')
 
NVL(job_id,'No Job Yet'
 
Uso de la Función NVL
 
SELECT last_name, salary, NVL(commission_pct, 0)
 
(salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL
 
FROM employees;
 
Uso de la FunciónNVL2
 
ELECT last_name, salary, commission_pct
 
NVL2(commission_pct
 
'SAL+COMM', 'SAL') income
 
FROM employees
 
WHERE department_id IN (50, 80);
 
Uso de la Función NULLIF
 
SELECT first_name, LENGTH(first_name) "expr1"
 
last_name, LENGTH(last_name) "expr2"
 
NULLIF(LENGTH(first_name)
 
LENGTH(last_name)) result
 
FROM employees;
 
Uso de la Función COALESCE
 
SELECT last_name
 
COALESCE(commission_pct, salary, 10) comm
 
FROM employees
 
ORDER BY commission_pct;
 
Exprecines Condicionales
 
ExpresiónCASE
 
FunciónDECODE
 
La Expresión CASE
 
Facilita las consultas condicionales realizando el trabajo de una sentencia IF-THEN-ELSE:
 
CASEexpr WHENcomparison_expr1 THENreturn_expr1
 
[WHENcomparison_expr2 THENreturn_expr2
 
WHENcomparison_exprn THENreturn_exprn
 
ELSEelse_expr]
 
END
 
Uso de la Expresión CASE
 
Facilita las consultas condicionales realizando una sentencia IF-THEN-ELSE: … …
 
SELECT last_name, job_id, salary
 
WHEN 'IT_PROG' THEN 1.10*salary
 
WHEN 'ST_CLERK' THEN 1.15*salary
 
ELSE salary END "REVISED_SALARY"
 
FROM employees;
  
La Función DECODE
 
Facilita las consultas condicionales de una sentencia CASE o IF-THEN-ELSE:
 
Col
expression, search1, result1
 
[, search2, result2,...,]
 
[, default])
 
Uso de la Función DECODE
 
SELECT last_name, job_id, salary
 
IT_PROG', 1.10*salary, '
 
ST_CLERK', 1.15*salary, '
 
SA_REP', 1.20*salary
 
Salary
 
REVISED_SALARY
 
FROM employees;
 
Uso de la Función DECODE
 
Muestre el tipo impositivo aplicable para cada empleado del departamento 80.
 
SELECT last_name, salary,
 
FROM employees
 
WHERE department_id = 80;
 
 

COMCEPTO
 
El Sistema de Gestión de Bases de Datos (SGBD) Consiste en un conjunto de programas, procedimientos y lenguajes que nos proporcionan las herramientas necesarias para trabajar con una base de datos. Incorporar una serie de funciones que nos permita definir los registros, sus campos, sus relaciones, insertar, suprimir, modificar y consultar los datos.