Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Error 1305

Estas en el tema de Error 1305 en el foro de Mysql en Foros del Web. Hola a todos. Muy buenas noches, mi nombre es Martin Raygoza y soy nuevo por aqui. El motivo de escribir y pedir la yauda de ...
  #1 (permalink)  
Antiguo 24/09/2010, 22:09
Avatar de BanScorpio  
Fecha de Ingreso: septiembre-2010
Ubicación: Guadalajara, Jalisco, Mexico
Mensajes: 65
Antigüedad: 11 años
Puntos: 1
Mensaje Error 1305

Hola a todos.
Muy buenas noches, mi nombre es Martin Raygoza y soy nuevo por aqui.
El motivo de escribir y pedir la yauda de todo quien desee ayudarme, es por estoy trabajando con MySQL y tengo una base de datos llamada biblioteca que posee un procedimiento en el cual al hacer un prestamo, el estatus se cambie a prestado y devuelto, dependiendo el caso; y un disparador, en el cual al hacer el prestamo y el estado sea "prestado" le existencia de los libros disminuya en 1 y si es "devuelto", se aumente en 1.

El problema es que al llamar al procedimiento despues de haber ingresado el disparador, me marca el error del titulo, pero de la siguiente manera:

mysql> call presl(123,124,107,'24/sep/2010','Prestado');
ERROR 1305 (42000): FUNCTION biblioteca.existencia does not exist


¿Alguien podria ayudarme?

De antemano, gracias.

Postdata
Dejo una copia del script realizado.

Código:
 create database Biblioteca; /* Se crea la base de datos */

use Biblioteca;            /*Se activa la base de datos*/

create table Libro        /* Se crea una tabla con el nombre de libros */
(isbn int not null,
titulo varchar(15) not null,
autor varchar(15) not null,
editorial varchar(15) not null,
existencia int not null,
constraint pk_libro primary key (isbn));

create table Lector        /* Se crea una tabla con el nombre de Lector */
(codigo int not null,
nombre varchar(25) not null,
direccion varchar(30) not null,
telefono varchar(15) not null,
constraint pk_lector primary key (codigo));

create table Prestamo        /* Se crea una tabla con el nombre de Prestamo */
(codigolector int not null,
isbnlibro int not null,
numprest int not null,
fecha varchar (10) not null,
estado varchar(10) not null,
constraint fk_codi foreign key (codigolector) references lector(codigo),
constraint fk_sbn foreign key (isbnlibro) references libro(isbn),
constraint pk_prestamo primary key (numprest));

insert into Libro   /* Se insertan los datos de la tabla Libro */
values(124,'100 años de soledad','G. G. Marquez','McGraw-Hill',2558);

insert into Lector   /* Se insertan los datos de la tabla Lector */ 
values(123,'Martin de Jesus Raygoza','San Ramon #28','331-249-8702');

delimiter //

create procedure presl (codlector int, numlibro int,np int, fech varchar (15), estatus varchar (15)) 
begin     
if exists(select* from lector where codigo=codlector) 
and        
exists(select* from libro where isbn=numlibro)
then                            
begin                              
if not exists(select* from prestamo where np=numprest)then                 
begin           
insert prestamo         
values(codlector,numlibro,np,fech,estatus);         
select 'Prestamo Realizado con exito'Aviso;    
end;
else 
begin        
update prestamo        
set estado=estatus                    
where codigolector=codlector and isbnlibro=numlibro and np=numprest and estado='Prestado';        
select 'EL Libro se ha devuelto' AVISO;        
end;
end if;
end;
else
select'No Exite Libro o Lector'Aviso;   
end if;
end;//


create trigger cambio 
after insert on prestamo
for each row
begin
if(new.estado='prestado') then
update libro
set existencia=existencia(-1);
elseif
update libro
set existencia=existencia(+1);
end if;
end;//
De antemano, muchas gracias y saludos.

Martin Raygoza "Ban Scorpio"
  #2 (permalink)  
Antiguo 25/09/2010, 11:43
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 12 años, 8 meses
Puntos: 46
Respuesta: Error 1305

Hola.

pues ahi dice que no existe la funcion existencia

set existencia=existencia(-1);
elseif
update libro
set existencia=existencia(+1);

Revisa eso, tienes que crearla para que incremente o decremente el numero de elementos disponibles.

Suerte.
  #3 (permalink)  
Antiguo 25/09/2010, 12:30
Avatar de BanScorpio  
Fecha de Ingreso: septiembre-2010
Ubicación: Guadalajara, Jalisco, Mexico
Mensajes: 65
Antigüedad: 11 años
Puntos: 1
Respuesta: Error 1305

Muchas gracias Lair..

Etiquetas: disparadores, procedimiento
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:41.