Minutas de Clases

48 views
Skip to first unread message

efischer

unread,
Dec 3, 2011, 11:11:19 AM12/3/11
to ACI...@googlegroups.com
Cada clase un estudiante tomará la notas de clases, con el objeto de compartir los temas vistos en cada oportunidad, los cuales se deben publicar como respuesta a este post.

Ghoulish

unread,
Dec 3, 2011, 11:12:36 AM12/3/11
to Fundamentos de Oracle
Minuta 11:41 03/12/2011
Autor : Pedro Paredes

Temas Tratados


crear una tabla

Para crear una tabla Usar el comando CREATE TABLE

ejemplo


create table empleado (
numEmpleado char(4),
apellido varchar2(35)
);


Se pueden crear los siguientes tipos para los atributos
integer
char
varchar2
number
float ------>numerico con decimal
date
NOTA:estudiar que significa cada tipo


pregunta prueba !!!!!!
number (6,2)
y le ingresa el valor 25,673
que ocurre?

pregunta prueba !!!!!!
que es dual en oracle
tabla virtual que permite realizar y probar funciones ,
sumas,restas,upper


Profesor habla llaves primarias y llaves foraneas
Como crear llaves primarias y foraneas
ej: create table empleado(
numEmpleado char(4) primary key
varchar(35),

*las llaves primarias no deben ser nulas ,esto significa que nunca ha
recibido valores .-
existe funcion NVL para tratar valores nulos.- ESTUDIAR PARA CATEDRA!!

segunda forma de crear tabla es ;
constraint PK_ARRIENDO primary key (NUMARRIENDO)

);


Para mas detalles observar el script en http://orahelp.blogspot.com/search?q=completo


Realizar trabajo de investigacion
--------------------------------

Investigar las mejores practicas de PLSQL
proximo sabado traer este trabajo.-

Profesor creara grupo en blogspot ACI900 http://groups.google.com/group/ACI900.
Esto con el fin de seguir las minutas si faltas a clase.

Traer en word con texto mas power point .-
----------------------------------------
Como traer y publicar en blogspot

-crear en tu blog tema mejores practicas en plsql
-mapear en tu blog un link
-si quiere ver doc pinche aqui.donde aparece la url de tu tarea.-
compartir en droxbox
-si quiere ver power point pinche aqui.donde aparece la url de tu
tarea.-compartir en droxbox
Debe tener
Encabezado
Resumen
Texto

En droxbox existe carpeta llamada public , donde publicar tu trabajo
copiar url y direccionar a blog.-

En dropbok crear carpeta llamada Aci900 para compartir en grupo de
trabajo.

--------------------


Si se olvida crear llave primara despues de poblar tablas
Se debe usar la funcion
ALTER TABLE


DDL ejemplo de comando es CREATE TABLE define datos
ESTUDIAR!!!
DML ejemplo de comando es insert , update , delete , manejo de dato
ESTUDIAR!!!

EJEMPLO
create table T1 (
IDT0 integer not null,
nombre varchar2 (25),
apellido varchar2 (30),
fecha date,
constraint PKt_1 primary key (IDT0));
select * from table t1

INSERT INTO T1 VALUES (1 'ERWIN,'FISCHER','09/09/1938');
INSERT INTO T1 VALUES (XX 'YY,'FISCHER','SYSDATE');

Mauricio Garay

unread,
Dec 10, 2011, 11:57:31 AM12/10/11
to Fundamentos de Oracle
Minuta viernes 09-12-2011

*El próximo sábado 17 de diciembre recuerden que es la prueba de
catedra Nº1


*Deben ingresar a google Docs y enviar una pregunta para la prueba de
catedra,las que serán revisadas y evaluadas por el profesor para ser
incluídas en la
catedra, c/u de las personas inscritas en el curso deben enviar una
pregunta.
El link es el siguiente: https://docs.google.com/spreadsheet/viewform?formkey=dFVZWjRXWmRqR1I0Z1RGaWtNbzkyeVE6MQ

Herramientas que debemos aprender a utilizar
*Dropbox
*DIIGO

Para que es la tabla dual ¿que es?


Fecha actual "SELECT SYSDATE FROM DUAL"


Importante
¿Qué comando debo utilizar para saber cuantas tablas tengo creadas?
select * from tab


¿Cómo sé la estructura que tiene una tabla?
DEsC nombre tabla ejemplo: DESC Persona


AUTOINCREMENTO
CREATE SEQUENCE SEQPersona;


Ejercicios de PL-SQL
-SELECT (distinct)
-WHERE
-ORDER BY
-UPPER, LOWER


Ultima pregunta
LISTAR TODOS LOS EMPLEADOS QUE NO SON GERENTES NI SUPERVISORES
SELECT *
FROM EMPLEADO
WHERE UPPER (CARGO) NOT IN ('GERENTES','SUPERVISORES');

Cristobal Langer

unread,
Dec 21, 2011, 8:03:57 PM12/21/11
to Fundamentos de Oracle
fecha clases: 21 de Dic
autor: Cristóbal Langer F.
proxima minuta: Daniel Berrios
*** CLASE CURSORES ***

ESTRUCTURA DE UN CURSOR

declare
.....
.....
.....
select

Begin

OPEN micursor;
-- inicio del cursor
LOOP;
Fetch micursor into v1,v2....vn
-- extrae un registro desde el cursor
exit when micursor%notfound
-- sale del cursor si no encuentra ningun registro en la posicion
que busca
DBMS_output_put_line (......)
-- imprime en pantalla

ENDLOOP
CLOSE
--cierre del cursor

Expection
en el momento que hay un error , lo captura, y tiene la

End

--Tarea de cursor
pagina 28 y 29 de la powerpoint Oracle - 02 - PL-SQL
Actividad : Modifique el cursor aplicando paso de parámetros, y
publique en su blog.


RECORRER
--identifica las tablas que existe en esta cuenta
select distinct tablas.owner, tablas.table_name
from all_tables tablas
where tablas.owner = 'HR';

--identifica de cada tabla las columnas que tienes
select distinct col.column_name
from all_tab_columns col
where upper(col.owner) = 'HR'
and lower(col.table_name) = 'employees';

***CODIGO CORREGIDO Marcos Gonzalo Vargas Salas***

DECLARE
vPropietario varchar2(40);
vNombreTabla varchar2(40);
vNombreColumna varchar2(100);

/* Primer cursor */
cursor obtieneTablas is
select distinct t.owner, t.table_name
from all_tables t
where t.owner = '158196506';

/* Segundo cursor */
cursor obtieneColumnas is
select distinct c.column_name
from all_tab_columns c
where c.owner = vPropietario
and c.table_name = vNombreTabla;


begin
open obtieneTablas;
dbms_output.put_line('Abriendo Cursor - obtieneTablas');
loop fetch obtieneTablas into vPropietario, vNombreTabla;
exit when obtieneTablas%NOTFOUND;
dbms_output.put_line('Tabla : '||vPropietario||'.'||
vNombreTabla);
open obtieneColumnas;
loop fetch obtieneColumnas into vNombreColumna;
exit when obtieneColumnas%NOTFOUND;
dbms_output.put_line('=>'||vNombreTabla||'.'||
vNombreColumna);
end loop;
close obtieneColumnas;
end loop;
close obtieneTablas;
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20001,'Se ha detectado un error - '||
SQLCODE||' -ERROR- '||SQLERRM);
end;

--Ejercicio en clases

select *
from all_tables

select owner, table_name
from all_tables
where owner = '157375849'

select owner from all_tab_columns



Ver power point subido
oracle 03 - variavles pl-sql

*** FUNCIONES ***


(recibe parametros y returna un resultado o valor)

ejemplo: select UPPER('hola') from DUAL
select user from dual;

--sysdate(fecha)
select to_char(sysdate,'day') from dual
--muestra el dia de la semana con mas caracteres
select '***'|| to_char(sysdate,'day') || '***' from dual

select to_char(to_date('03-09-1983','dd-mm-yyyy'),'day') from dual;
select to_char(to_date('03-09-1983','dd-mm-yyyy'),'DAY') from dual;

--buscar en google to_char
ingresar en el blog funciones que tengan que ver con fecha

en mejores practicas usar %type


EJERCICIO (genera 10 registros)

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;

pregunta de prueba
funciones de conversion; TO_CHAR, TO_DAY, TO_NUMBER

--encontrar un caracter especial
select instr('hola mundo','o',1,2) from dual

--agrega un mes a la variable
select add_months (sysdate,1) from dual

*** Profesor se compromete a corregir la prueba porque se encontro
algunos errores en la corrección. ***
se recuerda que el proximo miercoles 28 se hara la clase
correspondiente al viernes 30 dic


Octavio

unread,
Jan 6, 2012, 7:30:25 PM1/6/12
to Fundamentos de Oracle
Minuta:Octavio Moraga
Clase: 06/01/2012
Pròxima Minuta: Williams Alarcòn


--crear o remplazar - procedimiento bono2012
create
or replace procedure bono2012 (pnumempleado empleado.numempleado%type,
pbono numeric := 0.01)
IS
vsalario
empleado.salario%type;
vtotprop
numeric;

BEGIN
--sueldo o salario del empleado lo ingresa a vsalario
select
salario into vsalario
from
empleado where
numempleado = pnumempleado;
--cuantas propiedades administra ese empleado y lo ingresa al
vtotoprop
select
count(*) into vtotprop
from
propiedad
where
numempleado=pnumempleado;

--si el empleado maneja mas de 5 propiedades se va dar el bono
IF
vtotprop >= 5 then
update empleado
set salario = salario + salario * pbono
where numempleado = pnumempleado;
--imprime en pantalla
dbms_output.put_line ('empleado' || pnumempleado ||
'bono' || pbono ||
'aumento' || vsalario * pbono);
ELSE
dbms_output.put_line ('empleado' || pnumempleado || 'no aplica
bono');
END
IF;
END
bono2012;
--------------------------------------------------------------------------------------------------------

PARAMETRO FORMAL
BONO2012(PNUMEMPLEADO EMPLEADO.NUMEMPLEADO%TYPE, BONO MUMERIC := 00.1)

PARAMETRO REAL
BEGIN
BONO2012(PBONO => 0.05, PNUMEMPLEADO =>'SL21');
END;
ALTERNATIVAS: ('SL21', PBONO =>0.05)
(0.05, PNUMEMPLEADO =>'SL21')
(PBONO =>0.05, 'SL21') --NO FUNCIONA--

--------------------------------------------------------
FUNCION CUENTARPROPIEDADES

CREATE OR REPLACE FUNCTION CUENTAPROPIEDADES (PNUMEMPLEADO
EMPLEADO.NUMEMPLEADO%TYPE)
RETURN NUMBER
IS
VTOTPROP NUMERIC;


SELECT CUENTAPROPIEDADES('SL21') FROM DUAL; --- PARA INVOCAR UNA
FUNCION---
BEGIN
SELECT COUNT(*) INTO VTOTPROP
FROM PROPIEDAD
WHERE NUMEMPLEADO = PNUMEMPLEADO;
RETURN VTOTPROP;

EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN







SELECT CUENTAPROPIEDADES('SL21') FROM DUAL;

--- OTRA FORMA PARA INVOCAR UNA FUNCIÒN---

BEGIN
CUENTAPROPIEDADES('SL21);
END;

---FUNCION, RECIBE UN NUMERO ENTERO Y VA SUMANDO LOS DIGITOS--

CREATE OR REPLACE FUNCTION SUMADIGITOS(PNUMERO IN INTEGER)
RETURN NUMBER
IS
NUM_AUX NUMBER;
SUMA NUMBER;

BEGIN
NUM_AUX := PNUMERO;
SUMA :=0;
WHILE NUM_AUX >0
LOOP
SUMA := SUMA + MOD(NUM_AUX,10);
NUM_AUX := TRUNC(NUM_AUX / 10);
END LOOP;
RETURN SUMA;
END;
------------------------------------------------------------------------------------------------------
SELECT SUMADIGITOS(123) FROM DUAL;
------------------------------------------------------------------------------------------------------



Octavio

unread,
Jan 6, 2012, 7:32:05 PM1/6/12
to Fundamentos de Oracle
Autor:Octavio Moraga
Pròxima Minuta: Williams Alarcon



PROCEDIMIENTO: Bono de 50% a màs de 5 propiedades (si el empleado
maneja màs de 5 propiedades se aplica bono, si no, no se aplica bono)

CREATE O REPLACE PROCEDURE BONO2012 (PNUMEMPLEADO EMPLEADO.NUMEMPLEADO
%TYPE, PBONO NUMERIC:=0.1)
IS
VSALARIO EMPLEADO.SALARIO%TYPE;
VTOTPROP NUMERIC;


BEGIN
SELECT SALARIO
FROM EMPLEADO
WHERE NUMEMPLEADO = PNUMEMPLEADO;

SELECT COUNT(*) INTO VTOTPROP
FROM PROPIEDAD
WHERE NUMEMPLEADO = PNUMEMPLEADO;

IF VTOTPRO >= 5 THEN
UPDATE EMPLEADO
SET SALARIO = SALARIO + SALARIO * PBONO
WHERE NUMEMPLEADO = NUMEMPLEADO
-- ACTUALIZACIÒN DEL SALARIO RESPECTO A SI TIENE DERECHO A BONO O
NO--
DBMS_OUTPUT.PUT_LINE('EMPLEADO'||PNUMEMPLEADO||'BONO'||PBONO||
'AUMENTO'||VSALARIO * PBONO);
ELSE
DBMS_OUTPUT.PUT_LINE('EMPLEADO'||PNUMEMPLEADO||'NO APLICO BONO');
END IF;
END BONO2012;
---------------------------------------------------------
PARAMETRO FORMAL
BONO2012(PNUMEMPLEADO EMPLEADO.NUMEMPLEADO%TYPE, BONO MUMERIC := 00.1)

PARAMETRO REAL (ENTREGA DE VALORES)
SELECT SUMADIGITOS(123) FROM DUAL;









Reply all
Reply to author
Forward
Message has been deleted
0 new messages