You are on page 1of 18

CONSULTAS Y SUBCONSULTAS

SELECT [ ALL o DISTINCT] EXP1[,EXP2,EXP3,….] SELECT [ ALL o DISTINCT] EXP1[,EXP2,EXP3,….] SELECT [ ALL o DISTINCT] EXP1[,EXP2,EXP3,….]
FROM T1[,T2,T3,…] FROM T1[,T2,T3,…] FROM T1[,T2,T3,…]
[WHERE Condición] [WHERE Condición] [WHERE Condición]
[ORDER BY [E1[ASC o DESC], E2[ASC o DESC],….]; Operador (SELECT [ ALL o DISTINCT] EXP1[,EXP2,EXP3,….] [GROUP BY [A1,A2,….]] Agrupa datos iguales. Los campos por los que se agrupa
FROM T1[,T2,T3,…] deben figurar en la select
Condicione WHERE [WHERE Condición] [HAVING Condición]  Se aplica a los distintos grupos que vamos creando
- = , >, <, >=,<=,<> o ¡= [ORDER BY [E1[ASC o DESC], E2[ASC o [ORDER BY [E1[ASC o DESC], E2[ASC o DESC],….];
- AND y OR DESC],….])
- Expresión [NOT] IN (V1,V2,V3,….)
- [NOT] BETWEEN ___ AND ___ [ORDER BY [E1[ASC o DESC], E2[ASC o DESC],….];
- [NOT] LIKE ‘%___’ o ‘-xxxx—‘

UNIONES EXTERNAS RELACIONES BUCLES CONJUNTO SELECTS


SELEC T L.COD_LIBRO, NOMBRE_LIBRO, FECHA SELECT [ ALL o DISTINCT] EXP1[,EXP2,EXP3,….] SELECT [ ALL o DISTINCT] EXP1[,EXP2,EXP3,….]
FROM LEIDOS L, PARALEER P FROM T1[,T2,T3,…] FROM T1[,T2,T3,…]
WHERE L.COD_LIBRO(+)=P.COD_LIBRO; WHERE Condición [WHERE Condición]
CONNECT BY [PRIOR ]Atributo1 = [PRIOR] Atributo2 [ORDER BY [E1[ASC o DESC], E2[ASC o DESC],….]
(+) en los joins donde no tengamos correspondencia START WITH Atributo=valor Nodo de inicio del arbol
GROUP BY Atributo; OPERADOR DE COJUNTO
(UNION, UNION ALL, INTERSECT, MINUS)

SELECT [ ALL o DISTINCT] EXP1[,EXP2,EXP3,….]


FROM T1[,T2,T3,…]
[WHERE Condición]
[ORDER BY [E1[ASC o DESC], E2[ASC o DESC],….];

INSERCION TUPLAS
INSERT INTO NomTabla [(A1,A2,A3,…)] VALUES (V1,V2,V3,…); INSERT INTO NomTabla [(A1,A2,A3,…)]
SELECT [ ALL o DISTINCT] EXP1[,EXP2,EXP3,….]
FROM T1[,T2,T3,…]
[WHERE Condición]
[ORDER BY [E1[ASC o DESC], E2[ASC o DESC],….];

BORRADO TUPLAS ACTUALIZACIÓN DE TABLAS


DELETE [ FROM] NomTabla [WHERE Condición]; UPDATE NomTabla UPDATE NomTabla
SET A1=V1, [A2=V2],[….] SET A1 =(SELECT …..), A2 = (SELECT…..), A3=V3, (A,A5)=(SELECT…..)
WHERE [Condición]; WHERE [Condición];

FINALIZACIÓN DE LA INSERCIÓN, BORRADO Y ACTUALIZACIÓN


COMMIT [WORK]; ROLLBACK [WORK];
CREACIÓN DE TABLAS
CREACION TABLA CON RESTRICCIONES A NIVEL ATRIBUTO CREACIÓN TABLA CON RESTRICCIONES NIVEL TABLA CREACIÓN TABLA A PARTIR DE UNA SELECT
CREATE TABLE NomTabla( CREATE TABLE NomTabla(
A1 tipo [CONSTRAINT NomConstraint] Tipo A1 tipo, CREATE TABLE NomTabla [(A1,A2,A3,…)][TABLESPACE]
[CONSTRAINT NomConstraint] Tipo, A2 tipo [CONSTRAINT NomConstraint] Tipo, AS SELECT [ ALL o DISTINCT] EXP1[,EXP2,EXP3,….]
A2 tipo [CONSTRAINT NomConstraint] Tipo, A3 tipo, FROM T1[,T2,T3,…]
A3 tipo …… [CONSTRAINT NomConstraint] Tipo, [WHERE Condición]
) [STORAGE (INITIAL n K, NEXT n K, PCTINCREASE 50, MINEXTENST n)] [CONSTRAINT NomConstraint] Tipo, [ORDER BY [E1[ASC o
[TABLESPACE NomTableSpace]; [CONSTRAINT NomConstraint] Tipo DESC], E2[ASC o DESC],….];
)[TABLESPACE NomTableSpace];

BORRAR TABLAS
DROP TABLE NomTabla [CASCADE CONSTRAINTS; TRUNCATE TABLE NomTabla [DROP STORAGE o REUSE STORAGE];

MODIFICAR TABLAS
AÑADIR COLUMNAS ELIMINAR COLUMNAS MODIFICAR COLUMNAS
ALTER TABLE NomTabla ADD (A1 tipo [CONSTRAINT NomConstraint] Tipo, ALTER TABLE NomTabla DROP(A1,A2); ALTER TABLE NomTabla MODIFY(A1 TIPO DATO NUEVO + CONSTRAINTS);
A2 tipo [CONSTRAINT NomConstraint] Tipo,

…..); ALTER TABLE NomTabla MODIFY(A1 MANTIENE DATO + CONSTRAINTS


NUEVA);

AÑADIR CONSTRAINTS BORRAR CONSTRAINTS


ALTER TABLE NomTabla ADD CONSTRAINT NOM_CONSTRAINT TIPO; ALTER TABLE NomTabla DROP CONSTRAINT NOM_CONSTRAINT;

MODIFICAR CONSTRAINTS
ALTER TABLE NomTabla MODIFY CONSTRAINT NOM_CONSTRAINT TIPO;

HABILITAR O DESHABILITAR RESTRICCIONES


ALTER TABLE NomTabla ENABLE o DISABLE CONSTRAINT NOM_CONSTRAINT;
VISTAS
CREAR VISTA BORRAR VISTA
CREATE [OR REPLACE] VIEW NomVista [(A1,A2,A3,…)] AS CONSULTA [WITH READ ONLY]; DROP VIEW NomVista;

USUARIOS
CREAR USUARIOS MODIFICAR USUARIOS BORRAR USUARIOS
CREATE USER NomUsuario IDENTIFIED BY password ALTER USER NomUsuario Parámetro a modificar; DROP USER NomUsuario CASCADE;
[DEFAULT TABLESPACE NomTableSpace]
[TEMPORARY TABLESPACE NomTableSpace]
[QUOTA n[K/M/UNLIMITED] ON NombreTableSpace]
…….
[PROFILE NomProfile];

DESBLOQUEAR O BLOQUEAR UNA CUENTA DE USUARIO


ALTER USER NomUsuario ACCOUNT [LOCK/UNLOCK];
DERECHOS
SOBRE OBJETOS
DAR DERECHOS QUITAR DERECHOS
GRANT [DERECHO o ALL] ON USUARIO. [NomTabla, NomVista, Secuencia,Procedimiento] REVOKE[DERECHO o ALL] ON [NomTabla, NomVista, Secuencia,Procedimiento]
TO [Usuarios, ROL, PUBLIC] FROM[Usuarios, ROL, PUBLIC];
[WITH GRANT OPTION];

SOBRE SISTEMA
DAR DERECHOS QUITAR DERECHOS
GRANT [O1,O2,…] TO [Usuarios, ROL, PUBLIC] [WITH ADMIN OPTION]; REVOKE[O1,O2,…] FROM [Usuarios, ROL, PUBLIC];

ROLES
CREAR ROL INSERTAR USUARIO A UN ROL
CREATE ROLE NomRol; GRANT NomRol TO NomUsuario;

SINÓNIMOS
CREAR SINÓNIMO BORRAR SINÓNIMO
CREATE [PUBLIC] SYNONYM NomSinonimo FOR Usuario.NomTabla; DROP [PUBLIC] SYNONYM NomSinonimo;

COMENTARIOS
CREAR COMENTARIO ELIMINAR COMENTARIO
COMMENT ON TABLE [Vista o Tabla] IS ‘Comentario a realizar’; COMMENT ON TABLE [Vista o Tabla] IS ‘’;
PROFILES
CREAR PROFILE BORRAR PROFILE MODIFICAR PROFILE
CREATE PROFILE Nombre del Profile LIMIT DROP PROFILE NomProfile [CASCADE]; ALTER PROFILE NomProfile Parámetro a modificar;
SESSIONS_PER_USER n
CONNECT_TIME n
IDLE_TIME n
CPU_PER_SESSION n
LOCIGAL_ READS_PER_SESION
LOGICAL_READS_PER_CALL
PASSWORD_LIFE_TIME n
FAILED_LOGIN_ATTEMPTS n

PONER PROFILES ACTIVOS O DESACTIVADOS


ALTER SYSTEM SET RESOURCE_LIMIT = True o False;

STORAGES
[STORAGE (INITIAL n K, NEXT n K, PCTINCREASE 50, MINEXTENST n)]

SECUENCIAS
CREAR SECUENCIA BORRAR SECUENCIA USO SECUENCIA
CREATE SEQUENCE NomSecuencia DROP SEQUENCE NomSecuencia; Para ver porque posición va NomSecuencia.CURRVAL;
[START WITH n] Para incrementar la secuencia NomSecuencia.NEXTVAL;
[INCREMENT BY n]
[MAXVALUE n]
[MINVALUE n]
[CYCLE/NO CYCLE] .
[CACHE 2];

INDICES
CREAR ÍNDICE BORRAR ÍNDICE
CREATE [UNIQUE] INDEX NomIndice ON NomTabla(A1[ASC o DESC][,A2[[ASC o DESC]]) DROP INDEX NomIndice;
[STORAGE (INITIALS 30K, NEXT 30K, PCTINCREASE 50, MINEXTENT 2)]
[TABLESPACE NomTableSpace];
CLÚSTERS
CREAR CLÚSTER CREAR ÍNDICE
CREATE CLUSTER NomCluster( CREATE TABLE NomTabla( CREATE INDEX NomIndice ON CLUSTER NomCluster;
COL TIPO [,COL2 TIPO]) A1 tipo [CONSTRAINT NomConstraint] Tipo
[SIZE n] [CONSTRAINT NomConstraint] Tipo,
[STORAGE (…)] A2 tipo [CONSTRAINT NomConstraint] Tipo,
[TABLESPACE NomTableSpace]; A3 tipo ……
)
[CLUSTER NomCluster(A1)];

No se puede usar STORAGE ni TABLESPACE al crear la tabla porque lo


hemos usado en la creación del CLUSTER.

BORRAR CLÚSTER
DROP CLUSTER NomCluster [INCLUDING TABLES][CASCADE CONSTRAINT];

DATABASE LINK
CREAR DATABASE LINK CONSULTA A DATABASE LINK
CREATE [PUBLIC] DATABSE LINK NomDataBaseLink SELECT * FROM NomTabla@NomDataBaseLink;
CONNECT TO NomUsuario
IDENTIFIED BY password
USING ‘BBDDUsuario’;

TABLSESPACE
CREAR TABLESPACE MODIFICAR TABLESPACE
CREATE TABLESPACE NombreTableSpace CREATE TABLESPACE NombreTableSpace
DATAFILE ‘path donde se crearan los ficheros del tablespace’ ADD DATAFILE ‘path donde se crearan los ficheros del tablespace’
SIZE n [REUSE] SIZE n [REUSE]
[AUTOEXTEND OFF [AUTOEXTEND OFF
ON NEXT n [MAXSIZE UNLIMITED ] ] ON NEXT n [MAXSIZE UNLIMITED ]
n ]
n
[DEFAULT STORAGE (INITIALS 30K, NEXT 30K, PCTINCREASE 50, MINEXTENT 2)]
[OFFLINE o ONLINE]; [OFFLINE o ONLINE];

BORRAR TABLESPACE
DROP TABLESPACE NomTableSpace INCLUDING CONTENTS;
BLOQUES ANÓNIMOS BLOQUES NOMINADOS
[DECLARE] <<Nombre>>
[DECLARE]
Declaraciones
Declaraciones
BEGIN
BEGIN
Instrucciones
Instrucciones
[EXCEPTIONS]
[EXCEPTIONS]
Tratamientos de excepciones
Tratamientos de excepciones
END;
END Nombre;
PROCEDIMIENTOS FUNCIONES
CREATE or REPLACE PROCEDURE Nombre[(Parametro1 Tipo [, Prametro2 Tipo, ...])] CREATE or REPLACE FUNCTION Nombre[(Parámetro [IN/OUT/IN OUT] TIPO [ DEFAULT ],…)

[AS ó IS] RETURN TipoDatoRetorno AS

Declaraciones; Declaraciones;

[BEGIN] [BEGIN]

Sentencias; Sentencias;

[EXCEPTIONS] Return TipoDatoRetorno;

Tratamientos de excepciones; [EXCEPTIONS]

END Nombre; Tratamientos de excepciones;

END Nombre;
EXCEPCIONES
EXCEPCIONES PREDEFINIDAS EXCEPCIONES DE USUARIO
NO_DATA_FOUND Salta cuando no hay datos o no hay índice en el vector NombreExcepcion EXCEPTION;

TOO_MANY_ROWS Salta cuando la Select devuelve varias tuplas RAISE NombreExcepcion;

VALUE_ERROR Problemas con truncamiento WHEN NombreExcepcion THEN

INVALID_NUMBER Conversión errónea

STORAGE_ERROR Salta cuando nos quedamos sin memoria

PROGRAM_ERROR Error en ejecución no contemplada. Error del programa.

DUP_VAL_ON_INDEX Error cuando la Primary Key existe.

PRAGMA RAISE_APLICATION_ERROR
PRAGMA EXCEPTION_INIT(NombreExcepcionusuario, Nº Error Oracle); RAISE_APLICATION_ERROR(-20.000 a -20.999 , ‘Texto error’);

CURSORES
CREAR CURSOR APERTURA, FECHEO Y CIERRE DE UN CURSOR
CURSOR NombreCursor IS SELECT A1,A2 FROM TABLAS [WHERE CONDICIÓN]; OPEN NombreCursor;

CURSOR NombreCursor IS SELECT _________ FOR UPDATE; FETCH NombreCursor INTO ListaVariables;

UPDATE ….. WHERE CURRENT OF NombreCursor; CLOSE NombreCursor

CURSOR NombreCursor IS SELECT Atributo1, Atributo2, ROWID …….;

UPDATE ….. WHERE ROWID= REG_CUROSR.ROWID;

ATRIBUTOS CURSORES Y EXCEPCION QUE DA


NombreCursor%ISOPEN  True: abierto, False: cerrado

NombreCursor%FOUND  True: encuentra tuplas al fechear False: si no encuentra

NombreCursor%NOTFOUND  True: si no encuentra tuplas al fechear. False: si encuentra

NombreCursor%ROWCOUNT  Devuelve un pls_integer con las tuplas fecheadas

INVALID_CURSOR Excepcion que salta cuando usamos el cursor cerrado


CURSORES PARAMETRIZADOS
CREAR CURSOR PARAMETRIZADO APERTURA, FECHEO Y CIERRE DE UN CURSOR
CURSOR NombreCursor (Parametro1, Parametro2) OPEN NombreCursor (100.000,’VENDEDOR’);

IS SELECT _____,______ FETCH NombreCursor INTO ListaVariables;

FROM _______ CLOSE NombreCursor

WHERE Atributo1=Parametro1 AND Atributo2=Parametro2;

CURSORES DINÁMICOS
CREAR CURSOR DINÁMICO APERTURA, FECHEO Y CIERRE DE UN CURSOR
TYPE Tipo_Cursor IS REF CURSOR; OPEN NombreCursor FOR SELECT ……… WHERE v_cod=v_acoplamiento;

NombreCursor Tipo_Cursor; FETCH NombreCursor IN variables;

CLOSE NombreCursor;

REGISTROS
CREAR REGISTRO REGISTROS A MEDIDA
REG_NOMBRE Tabla o Cursor%ROWTYPE; TYPE NombreReg IS RECORD(

Variable1Tipo [NOT NULL] [:=],

Variable 2 Tipo,

Variable 3 Tipo);

Reg NombreReg;
VECTORES
VECTORES INDEXADOS MÉTODOS DE LOS VECTORES
TYPE NombreVectorTipo IS TABLE OF Tipo_de_datos INDEX BY BINARY_INTEGER; Vector.COUNT  cuenta elementos del vector

NombreVector NombreVectorTipo; Vector.EXISTS(índice)  True o False si existe el vector para ese índice

NombreVector(índice).atributo; Vector.FIRST  índice primer vector

Vector.LAST  índice último vector

Vector.NEXT(índice) índice siguiente al que se pasa

Vector.PRIOR(índice)  índice anterior al que se pasa

VECTORES ASOCIATIVOS Vector.DELETE  elimina todos los elementos del vector

NombreVectorTipo IS TABLE OF Tipo_de_datos INDEX BY Tabla.Atributo%TYPE; Vector.DELETE(n)  elimina elemento del índice n del vector

Tabla NombreVectorTipo; Vector.DELETE(n,n2)  elimina elementos del vector desde n hasta n2


NombreVector(índice).atributo;

DISPARADORES (TRIGGERS)
CREAR TRIGGER ACTIVAR O DESACTIVAR UN TRIGGER
CREATE OR REPLACE TRIGGER NombreTrigger AFTER/BEFORE INSERT/DELETE/UPDATE[OF C1,C2] ALTER TRIGGER NombreTrigger ENABLE/DISABLE;
[OR INSERT/DELETE/UPDATE[OF C1,C2] OR….] ON TABLA/VISTA
ACTIVAR O DESACTIVAR LOS TRIGGERS DE UNA TABLA
[FOR EACH STATEMENT]  se ejecuta una vez
ALTER TABLE Tabla ENABLE/DISABLE ALL TRIGGERS;
[FOR EACH ROW]  se ejecuta tantas veces como tuplas se vean afectadas
HACER FALLAR UN TRIGGER
[WHEN(condición)]  filtra tuplas RAISE_APPLICATION_ERROR;
DECLARE

BEGIN

[EXCEPTION]

END NombreTrigger;
TRIGGER MULTIEVENTO TABLAS MUTANTES
IF DELETING THEN Cuando usamos FOR EACH no podemos consultar la propia tabla del trigger. La
solución serían 2 triggers:
INSERTING
- Uno BEFORE STATEMENT  En este trigger preparamos los
UPDATING datos que nos interesan en una tabla auxiliar.

UPDATING(‘Atributo’) - Otro AFTER FOR EACH ROW  en este trigger accedemos a


los datos preparados.

TRIGGERS INSTEAD OF ACCESO A TUPLAS EN MODO FOR EACH ROW


- Solo se pueden programar para vistas :NEW.Atributo  valor nuevo

- Solo sirven para FOR EACH ROW :OLD.Atributo  valor antiguo

JOBS
CREAR JOB FUNCIONES DE LOS JOBS
DBMS_JOB.SUBMIT ( job, what, [next date], [interval]); DBMS_JOB.REMOVE(n)  elimina job

COMMIT WORK;  con esto enviamos el trabajo. DBMS_JOB.BROKEN(n,[TRUE o FALSE])  activa(FALSE) o desactiva(TRUE) el job

job  devuelve el número de trabajo es un out binary_integer. DBMS_JOB.RUN(n)  inicia job

what  procedure que queremos que se ejecute, se escrib en varchar2, es decir con DBMS_JOB.WHAT(n,’nuevo’)  cambia el what

apostrofes. DBMS_JOB.INTERVAL(n,’nueva fecha’)  cambia el intervalo

[next date]  in date, indica cuando va a ejecutarse la primera vez. DBMS_JOB.NEXT_DATE(n,’Fecha’)  cambia fecha del next date

[interval]  in varchar2, cadencia de ejecución, es una fecha. Permite una función. DBMS_JOB.CHANGE(n,’what’,nextdate,’interval’)  cambia todo de golpe

TUBERÍAS (PIPES)
PUBLICAS PRIVADAS
DBMS_PIPE.PACK_MESSAGE(Mensaje); DBMS_PIPE.CREATE_PIPE(‘Nombre tubería);
DBMS_PIPE.SEND_MESSAGE(‘Nombre tubería’, tiempo de espera, [tamaño tubería]);
DBMS_PIPE.RECEIVE_MESSAGE(‘Nombre tubería’,tiempo espera);
DBMS_PIPE.UNPACK_MESSAGE(‘variable salida’);
DBMS_PIPE.NEXT_ITEM_TYPE sabemos si hay algo que desempaquetar dando cero si no tiene nada
FICHEROS
ABROR FICHERO ESCRIBIR FICHERO
Handdle UTL_FILE.FILE_TYPE; UTL_FILE.PUT_LINE(Handdle,’cadena a escribir’);

Handdle:=UTL_FILE.FOPEN(‘ruta’,’Nombre Fichero’,’Modo apertura’)

ruta  ruta donde esta el fichero

Nombre Fichero  Nombre del fichero a abrir

Modo apertura  Tipo de apertura del fichero: w: modo escritura.


Sobreescribe, r: modo lectura, a: modo añadir.

CERRAR FICHERO LEER FICHERO


UTL_FILE.FCLOSE(Handdle); UTL_FILE.GET_LINE(Handdle,salida);

EXCEPCIONES DE LOS FICHEROS


WHEN UTL_FILE.READ_ERROR THEN

UTL_FILE.WRITE_ERROR

UTL_FILE.INVALID_ERROR

UTL_FILE.INVALID_OPERATION

OBJETOS
CREAR CABECERA OBJETO CREAR CUERPO OBJETO
CREATE OR REPLACE TYPE NombreObjeto AS OBJECT( CREATE OR REPLACE TYPE BODY NombreObjeto AS/I

variable1 Tipo, Member PROCEDURE NombreMétodo(Parámetros) AS


variable2 Tipo,
Declaraciones de variables;
variable3 Tipo,
BEGIN
member PROCEDURE NombreMétodo(Parámetros),
Self.variable;  con esto accedemos a una variable del objeto.
member FUNCTION NombreFunción(Parámetros) RETURN TipoRetorno);
END NombreMétodo; …….

END;
FORMA DE USO DE UN OBJETO BORRAR OBJETOS CREAR UNA TABLA CON LOS ATRIBUTOS DE UN OBJETO
CREATE OR REPLACE PROCEDURE nombreProcedure (Parámetros) AS DROP TYPE NombreObjeto [FORCE]; CREATE TABLE NomTabla OF NombreObjeto;

Objeto1 NombreObjeto; DROP TYPE BODY NombreObjeto [FORCE];


Objeto1:=NombreObjeto(x,x,x);

SQL DINÁMICO
DDL DML SIN SELECT
n := DBMS_SQL.OPEN_CURSOR; n := DBMS_SQL.OPEN_CURSOR;

DBMS_SQL.PARSE(n,ORDEN,DBMS_SQL.[V6,V7 oNATIVE]); DBMS_SQL.PARSE(n,ORDEN,DBMS_SQL.[V6,V7 oNATIVE]);

DBMS_SQL.CLOSE_CURSOR(n); DBMS_SQL.BIND_VARIABLE(n,’:dato1’,variable pl);

tuplas:=DBMS_SQL.EXECUTE(n);.

DBMS_SQL.CLOSE_CURSOR(n);

SELECT EXECUTE INMEDIATE


n := DBMS_SQL.OPEN_CURSOR; DDL

DBMS_SQL.PARSE(n,ORDEN,DBMS_SQL.[V6,V7 oNATIVE]); EXECUTE INMEDIATE ‘cadena’;

DBMS_SQL.BIND_VARIABLE(n,’:dato1’,variable1); DML SIN SELECT

DBMS_SQL.BIND_VARIABLE(n,’:dato2’,variable2); EXECUTE INMEDIATE ‘cadena :dato1’ USING variable;

DBMS_SQL.DEFINE_COLUMN(n,1,variable1,tamaño); SELECT

EXECUTE INMEDIATE ‘Select * ……’ INTO variable1, variable2 USING v1,v2;


DBMS_SQL.DEFINE_COLUMN(n,2,variable2,tamaño);

tuplas:=DBMS_SQL.EXECUTE(n);

DBMS_SQL.FETCH_ROWS(n);  devuelve 0 si no hay tuplas, distinto 0 si hay

DBMS_SQL.COLUMN_VALUE(n,1,variable1);

DBMS_SQL.COLUMN_VALUE(n,2,variable2);

DBMS_SQL.CLOSE_CURSOR(n);
PAQUETES
CREAR CABECERA PAQUETE CREAR CUERPO PAQUETE
CREATE OR REPLACE PACKAGE NombrePaquete AS CREATE OR REPLACE PACKAGE BODY NombrePaquete AS

Declaración de Tipos, Variables, Constantes, Excepciones, Cursores Declaración de variables y desarrollo de funciones y procedimientos estos
y Expecificaciones de funciones y procedimientos pueden ser públicos o privados.

END NombrePaquete; [BEGIN]

Código de inicialización del paquete. Sólo se ejecuta una vez por


sesión.

END NombrePaquete;

CREACIÓN DE UN CURSOR PÚBLICO EN UN PAQUETE


CREATE OR REPLACE PACKAGE NombrePaquete AS CREATE OR REPLACE PACKAGE BODY NombrePaquete AS

CURSOR NombreCursor RETURN TipoRetorno; CURSOR NombreCursor RETURN TipoRetorno IS SELECT ………….;

END NombrePaquete; END NombrePaquete;

OBJETOS MULTIMEDIA (LOB)


INICIALIZACIÓN DE LOS OBJETOS LOB INSERCIÓN OBJETOS LOB
INSERT INTO TABLA(x,Foto,Memo) VALUES(1,EMPTY_BLOB(), EMPTY_CLOB()); DBMS_LOB.FILEOPEN(BFILE, DBMS_LOB.FILE_READONLY);

BFILENAME(‘Objeto directory’,’fichero’); SELECT NombreBFile INTO v_file FROM ____WHERE ____;

DBMS_LOB.LOADFROMFILE(BLOB,BFILE,DBMS_LOB.GETLENGTH(BFILE));

DBMS_LOB.FILECLOSE(BFILE);

INSERT INTO NombreTabla VALUES(1,BFILENAME(‘__’,’__’),EMPTY_BLOB())

RETURNING campoTabla INTO ParametroBlob;

SELECT NombreBlob INTO ParametroBlob FROM NombreTabla WHERE ____;

UTL_BINFILE
CARGAR ARCHIVO GUARDAR ARCHIVO
UTL_BINFILE.LOAD_BLOB_FROM_FILE(‘FileName’); UTL_BINFILE.SAVE_BLOB_TO_FILE(BLOB,’FileName’);

DIRECTORY
CREAR DIRETORIO DERECHOS QUE SE DAN EN VEZ DE CREAR DIRECOTORIOS
CREATE DIRECTORY NombreAlias AS ‘Ruta’; GRANT READ,WRITE,DELETE ON DIRECTORY NombreAlias TO usuario;
Hay que tener el derecho de CREATE ANY DIRECTORY
SENTENCIAS IF

IF condición THEN IF condición THEN

Sentencias; Sentencias;

END IF; ELSE

Sentencias;

END IF;

IF condición1 THEN

Sentencias;

IF condición2 THEN

Sentencias;

ELSE

Sentencias;

END IF;

BUCLES

LOOP LOOP
Sentencias; Sentencias;

IF condicion then EXIT WHEN condicion;


EXIT;
END IF; END LOOP;

END LOOP;

WHILE condicion LOOP FOR var IN [REVERSE] ValorInicial … ValorFinal LOOP

Sentencias; Sentencias;

END LOOP; END LOOP;


BUCLES CON CURSORES

OPEN NomCursor; OPEN NomCusor;

LOOP FETCH NomCursor INTO variables;

FETCH NomCursor INTO variables; WHILE NomCursor%FOUND LOOP

EXIT WHEN NomCursor%NOTFOUND; Sentencias;

Sentencias; FETCH NomCursor INTO variables;

END LOOP; END LOOP;

IF NomCursor%ROWCOUNT = 0 THEN IF NomCursor%ROWCOUNT = 0 THEN

Sentencias; Sentencias;

END IF; END IF;

CLOSE NomCursor; CLOSE NomCursor;

FOR variable IN NomCursor LOOP

Sentencias;

END LOOP;

--variable se autodeclara, el FOR ya abre y cierra el cursor automáticamente.

TABLAS DE VISTAS
USER_CONSTRAINTS -> vemos las constraints de nuestras tablas USER_CLUSTERS -> vemos los clusters del usuario
USER_TAB_PRIVS -> vemos privilegios de las tablas ALL_CLUSTERS -> vemos todos los clusters de todos los usuarios
SESSION_PRIVS -> vemos privilegios de la sesión DBA_CLUSTERS -> vemos todos los clusters de la BBDD
DBA_USER_PRIVS -> vemos mas privilegios USER_ERRORS -> vemos errores
USER_TS_QUOTaS -> vemos cuotas de los tablespaces USER_SOURCE -> vemos código
ROLE_ROLE_PRIVS -> vemos los roles a los que pertenecemos OPEN_CURSORS -> cursores abiertos en la BBDD
DBA_PROFILES -> vemos perfiles ALL_DIRECTORIES -> información de todos los directorios
USER_OBJECTS -> vemos perfiles DBA_DIRECTORIES -> información de los directorios
USER_SEQUENCE -> vemos las secuencias del usuario USER_TABS_COLUMNS -> información delos atributos de las tablas
USER_INDEXES -> vemos los índices creados
TIPOS DE DATOS EN SQL
TIPO CARÁCTER TIPO NUMÉRICO
CHAR (num) Máximo 2k. Guarda cadena de caracteres fija. NUMBER Almacena en coma flotante.
VARCHAR2 (num [Tam. Máx. 4K]) Guarda cadena de caracteres variables NUMBER (num) Almacena en coma fija. Num máximo hasta 38.
LONG (Esta en desuso) Permite almacenar hasta 2GB en forma de Long var. NUMBER (num,n) Almacena en coma fija. Máximo 38.
m  indica el nº de decimales.
num  nº total del numero(entero+decimales).

TIPO FECHA TIPOS BINARIOS


DATE Guarda una fecha. Siglo, año,mes,dia,hora,min,seg. ROWID Pseudoexpresión que guarda la dirección física de
una tupla.
RAW(n) Permite almacenar en binario hasta 2K
LONGRAW Permite almacenar en binario hasta 2GB
BLOB Almacenan datos binarios hasta 4GB no tienen
ninguna limitación como los Long. Son internos
a la BD.
CLOB Almacenan cadena de caracteres hasta 4GB sin
ninguna limitación. Son internos a la BD.
BFILE Almacenan lo mismo que los BLOB pero son
externos a la BD. Oracle guarda una referencia a
dicho BFILE.

TIPOS USADOS EN PL DEVELOPER


Char

Varchar2 32k como máximo

Long

Number(n,m)

Date

Binary_integer Cuando se sufre overflow binary_integer trunca y no

Pls_integer avisa, pero pls_integer si avisa.

Boolean: True, False, Null

CLob, Blob, BFile

%Type  Sirve para coger el tipo del atributo


FUNCIONES
FUNCIONES NUMÉRICAS FUNCIONES DE GRUPO
ABS(n) Calcula valor absoluto. AVG(A) Calcula la media excluyendo a los nulos.
CEIL(n) Calcula el entero siguiente SUM(A) Suma excluyendo a los nulos.
FLOOR(n) Calcula el entero inmediatamente inferior COUNT (* o A) Cuenta tuplas.
MOD (m,n) Calcula el resto de la división. Admite valores MAX(A) Máximo atributo.
decimales. MIN(A) Mínimo atributo.
NVL (Exp,[valor]) Si la Exp no es nula lo deja como esta, pero si es
nula lo cambia por el valor puesto.
POWER (b,exp) Calcula la potencia de b según el exponente exp.
ROUND(A,[d]) Redondea a entero afinando los decimales.
TRUNC(A,[d]) Trunca un entero afinando decimales.
SQRT(n) Calcula la raíz cuadrada.

FUNCIONES DE LISTA FUNCIONES DE FECHAS


GREATEST(xx,xx,xx) Da el valor más alto. SYSDATE Nos devuelve la fecha del sistema.
LEAST(xx,xx,xx) Devuelve el valor más pequeño. ADD_MONTHS(Fecha,±meses) Suma meses.
CHR (num) FROM DUAL Devuelve el carácter ASCII de num. LAST_DAY(Fecha) Devuelve el ultimo día del mes.
ASCII(‘m’) FROM DUAL Devuelve el valor ASCII de m. MONTHS_BETWEEN(Fecha1,Fecha2) Devuelve el nº de meses entre esas dos
CONCAT(cad1,cad2) Concatena dos cadenas. Fechas.
|| Concatena dos cadenas. NEXT_DAY(Fecha,’Dia de la semana’) Devuelve la fecha correspondiente al día de la
LOWER(cad) Pasa a minúsculas. semana puesto en el 2º parámetro.
UPPER(cad) Pasa a mayúsculas.
INITCAP(cad) Pasa la primera letra a mayúsculas.
LPAD(cad1,n,[cad2]) Inserta en la cadena cad1 cad2 por la izquierda.
Alinea derecha.
RPAD(cad1,n,[cad2]) Inserta en la cadena cad1 cad2 por la derecha.
Alinea izquierda.
RTRIM(cad1,[cad2]) Elimina los caracteres especificados en cad2 por la
derecha hasta que falle.
LTRIM(cad1,[cad2]) Elimina los caracteres especificados en cad2 por la
izquierda hasta que falle.
REPLACE(cad,busq,[sustitución]) Reemplaza en cad la búsqueda poniendo
sustitución. Si no se pone nada lo borra. Se trabaja
a nivel de cadena.
TRANSLATE(cad,cad2,cad3) Se trabaja a nivel de carácter.

SUBSTR(cad,pos,[n]) Extrae una subcadena desde pos hasta n. Sino


declaro n se extrae hasta el final.
INSTR(cad,busqueda,[n],[m]) Devuelve un número (posición de la ocurrencia).
Busca búsqueda en cad desde la posición n, m es
el número de ocurrencias.
LENGTH(cad) Devuelve la longitud de la cadena.
FUNCIONES DE CONVERSIÓN Cambiar separadores: ALTER SESSION SET NLS_ CHARACTERS=’, .’;
TO_CHAR(Fecha,’formato’) Formatea fecha de la manera que nosotros
queramos. Separador decimal separador de mil

Cambiar formato fecha: ALTER SESSION SET NLS_DATE_FORMAT = ‘dd/mm/yyyy’;


ddd  nº del día en el año
dd  día Cambiar idioma: ALTER SESSION SET NLS_DATE_LANGUAGE = SPANISH;
d  nº día de la semana
day  ‘Lunes’,’Martes’,….
Dy  dia de la semana con 3 letras
mm  mes
Month  nombre del mes formato
MON  3 letras del mes
WW  nº semana del año
W  nº semana dentro del mes
q  trimestre
HH  am/pm
HH24  24H
mi  minutos
ss  segundos
yyy  año

TO_DATE(Fecha,’formato’) Convierte a fecha


TO_NUMBER(‘123’) Pasa a number la cadena
DECODE(Atributo o Exp, valor1,Expresion1,
valor2, Expresion2,….,
valor por defecto); Devuelve una cadena.

You might also like