Duda con procedimientos almacenados
Publicado por Dan (1 intervención) el 12/08/2013 16:36:47
Hola a todos, tengo dos preguntas respecto a procedimientos almacenados en MySQL:
1 - He estado investigando y he visto que en SQL 2003 (MySQL) no hay nada como la instrucción '%type' (para declarar variables del tipo de una columna de una tabla, sin conocer nosotros el tipo de dicha columna a priori) de PL/SQL (oracle). Mi pregunta es como se puede "imitar" esto en SQL 2003.
2 - La segunda pregunta, he hecho un procedimiento almacenado para insertar unas filas en unas determinadas tablas (para practicar porque estoy aprendiendo). El caso es que se ejecuta bien, pero en el visor de resultados me saltan 2 warnings diciéndome que dicho sp no ha hecho nada, ni insertar, ni updatear.. nada. Pero si hago un select en las tablas pertintentes si que se han insertado los datos, y no entiendo por qué pasa esto. Adjunto el código del sp:
[spoiler]
[spoiler]
Muchas gracias.
1 - He estado investigando y he visto que en SQL 2003 (MySQL) no hay nada como la instrucción '%type' (para declarar variables del tipo de una columna de una tabla, sin conocer nosotros el tipo de dicha columna a priori) de PL/SQL (oracle). Mi pregunta es como se puede "imitar" esto en SQL 2003.
2 - La segunda pregunta, he hecho un procedimiento almacenado para insertar unas filas en unas determinadas tablas (para practicar porque estoy aprendiendo). El caso es que se ejecuta bien, pero en el visor de resultados me saltan 2 warnings diciéndome que dicho sp no ha hecho nada, ni insertar, ni updatear.. nada. Pero si hago un select en las tablas pertintentes si que se han insertado los datos, y no entiendo por qué pasa esto. Adjunto el código del sp:
[spoiler]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use trenes;
delimiter //
create function insTren(id int(11),don int(11),lleg int(11),model varchar(20),fCom date,maxVag int(11),
coc int(11),trs int(11),vgs int(11),nomEst varchar(15)) returns bool
not deterministic
modifies sql data
begin
declare b1 bool default true;
declare ESTACION int;
declare COCHERA int;
select id from estacion where id=don into ESTACION;
select estacion from cochera where estacion=coc into COCHERA;
if (don is null and lleg is not null) or (don is not null and lleg is null) then
set b1=false;
else
if ESTACION is null then
insert into estacion(id,nombre) values (don,nomEst);
end if;
if COCHERA is null then
insert into cochera values (coc,trs,vgs);
end if;
insert into tren values(id,don,lleg,model,maxVag,coc,fCom);
end if;
return b1;
end;
//
delimiter ;
select insTren(100,1,5,'XV88',date(now()),10,1,3,60,'Est1') from dual;
[spoiler]
Muchas gracias.
Valora esta pregunta


0