
Ayuda procedimiento SQL
Publicado por Jose Luis (12 intervenciones) el 31/01/2015 18:07:27
Hola, necesito crear un procedimiento llamado "insConductor" para insertar un conductor nuevo en la base de datos y que compruebe que ningún atributo es nulo, que el atributo "DNI" es de la forma "dddddddd" donde las d pueden tomar los valores '0' ... '9'. Además se ha de comprobar que la provinca sea igual a uno de los códigos que aparece en la siguiente tabla https://www.dropbox.com/s/qo0pwt5ipk8t3wt/provincias.txt?dl=0, para ello se creará una nueva tabla con los datos del fichero y se comprobará que el código introducido corresponde con el de una provincia.
CONDUCTOR(DNI, Nombre, Direccion, Provincia)
Pues quiero saber si mi codigo es correcto:
teniendo en cuenta que:
Y querria saber como comprobar que la provincia es igual a uno de los codigos del .txt
Gracias de antemano
CONDUCTOR(DNI, Nombre, Direccion, Provincia)
Pues quiero saber si mi codigo es correcto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
drop procedure if exists insConductor;
delimiter |
create procedure insConductor(dni char(8),nom varchar(50), dir varchar(40),prov varchar(20))
begin
if(dni<>'' and nom<>'' and dir<>'' and prov<>'') then
if(esDNI(dni)=1) then
select dni,nom,dir,prov;
insert into CONDUCTOR values (dni,nom,dir,prov);
end if;
end if;
end;
|
delimiter ;
teniendo en cuenta que:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
drop function if exists esDNI;
delimiter //
create function esDNI(cad char(8)) returns int
begin
declare k int default length(cad);
declare i int default 1;
while(i<=k) do
if (ascii(substring(cad,i,1))>=48 and ascii(substring(cad,i,1))<=57) then
set i=i+1;
else
return 0;
end if;
end while;
return 1;
end;
//
delimiter ;
Y querria saber como comprobar que la provincia es igual a uno de los codigos del .txt
Gracias de antemano
Valora esta pregunta


0