Mostrando entradas con la etiqueta tabla. Mostrar todas las entradas
Mostrando entradas con la etiqueta tabla. Mostrar todas las entradas

lunes, 18 de enero de 2010

Oracle - Crear Tablas desde archivo .sql

El comando para ejecutar un archivo sql sería:

@archivo.sql;

o bien

@C:\Cualquier\Ruta\archivo.sql;

Desde luego que la unidad puede variar y no necesariamente tiene que ser la unidad C.

Ahora bien, si ejecutamos esta sentencia desde la Página inicial de Base de Datos; es decir la interfaz Web, obtendremos el error:

ORA-00900: invalid SQL statement

Al menos con al version oracle xe 10g express me dió este error.

Oracle dice al respecto de este error:
ORA-00900 invalid SQL statement
Cause: The statement is not recognized as a valid SQL statement. This error can occur if the Procedural Option is not installed and a SQL statement is issued that requires this option (for example, a CREATE PROCEDURE statement). You can determine if the Procedural Option is installed by starting SQL*Plus. If the PL/SQL banner is not displayed, then the option is not installed.

Action: Correct the syntax or install the Procedural Option.


Por el momento no nos complicamos la vida y nos conectamos mediante el editor SQL PLUS (se instaló con Oracle developer).
Cuando nos hemos conectado escribimos el comando:

@C:\Cualquier\Ruta\archivo.sql;

Y ¡Sí! ha funcionado.

sábado, 16 de enero de 2010

Oracle - Trigger y algunas cosas básicas

No es case sensitive.
No existe el: on update cascade.
Para crear una tabla:

create table Producto(
id number not null constraint d_pk primary key,
precio number,
stock number);

/*otra tabla*/
create table Pedidos(
idprod number not null,
unidades number,
foreign key (idprod) references producto(id));


Insertando a las tablas:

/*insertando a la tabla producto*/
insert into Producto values(1,350,10);

/*insertando a la tabla pedidos*/
insert into Pedidos values(1,8);


Haciendo Select en las tablas:

select * from Pedidos order by idprod asc;
select * from Producto order by id asc;
/*Esta última consulta nos mostrará el valor '10' en el campo 'stock' aún cuando ya
se ha hecho el pedido de '8' productos.*/


Lo ideal sería que cuando se hagan pedidos el numero de estos sea restado al campo 'stock' de la tabla Producto.

En ese caso podemos crear un trigger en el que especificaremos que cada vez que se haga un 'insert', un 'update' o un 'delete', el valor en el campo 'stock' de la tabla Poducto se actualize.

Creando el trigger 'calculastock':

create o replace trigger calculastock
after insert or delete or update
on Pedidos
for each row
begin
if(inserting or updating)
then
update Producto
set stock = stock - :new.unidades
where Producto.id = :new.idprod;
end if;
if(updating or deleting)
then
update Producto
set stock = stock + :old.unidades
where Producto.id = :old.idprod;
end if;
end;


Las variables 'old' y 'new' no necesitan declararse, son tipo tipo %ROWTYPE , y contienen una copia del registro 'antes'(old) y 'después'(new) de la acción sql(insert, update,delete).

domingo, 21 de junio de 2009

Data Binding V - LaTeX

Código LaTeX

Ejemplo usando MultiBinding y MultiValueConverter .Lo que muestra es el código para generar una tabla en LaTeX:



Descargar
Nota: Se requiere el framework 3.5