Error en Procedimiento almacenado
Publicado por guschiriboga (2 intervenciones) el 24/02/2009 07:05:07
Hola, necesito crear un procedimiento almacenado para insertar un dato en la tabla que se envia como parametro al procedimiento.
Me explico mejor, tengo varias tablas que las llamo maestras, estas contienen un campo id, y un campo texto, por lo que quiero hacer un solo sp para insertar el dato texto en la tabla deseada.
Ya hice uno para hacer select pero, en este caso quiero optimizar el sp llamando una sola vez a la sentencia insert al final, pasandole los valores necesarios.
les dejo la sintaxis de creacion del sp, y el error que me esta dando.
tengo las tablas
ciudad
cui_id int(11) auto_increment
ciu_texto varchar(300)
departamento
depar_id int(11) auto_increment
depar_texto varchar(300)
he intentado las siguientes opciones y en todas me da un error de sintaxis...
---------------------------------
OPCION 1
---------------------------------
DELIMITER $$
CREATE PROCEDURE `orientanet`.`sp_insert_tablas_maestras` (in tabla varchar(50), in dato varchar(300))
BEGIN
declare campo_id varchar(30);
declare campo_texto varchar(30);
case tabla
when 'ciudad' then
campo_id='ciu_id';
campo_texto='ciu_texto';
when 'departamento' then
campo_id='depar_id';
campo_texto='depar_texto';
else select 'Error en tabla ingresada';
end case;
insert into tabla (campo_id, campo_texto) values (null, dato);
END $$
DELIMITER ;
DELIMITER $$
---------------------------------
OPCION 2
---------------------------------
DELIMITER $$
CREATE PROCEDURE `orientanet`.`sp_insert_tablas_maestras` (in tabla varchar(50), in dato varchar(300))
BEGIN
declare campo_id varchar(30);
declare campo_texto varchar(30);
select @tabla_insert := tabla;
select @dato_insert := dato;
case @tabla_insert
when 'ciudad' then
campo_id='ciu_id';
campo_texto='ciu_texto';
when 'departamento' then
campo_id='depar_id';
campo_texto='depar_texto';
else select 'Error en tabla ingresada';
end case;
insert into @tabla_insert (campo_id, campo_texto) values (null, @dato_insert);
END $$
DELIMITER ;
DELIMITER $$
---------------------------------
OPCION 3
---------------------------------
DELIMITER $$
CREATE PROCEDURE `orientanet`.`sp_insert_tablas_maestras` (in tabla varchar(50), in dato varchar(300))
BEGIN
select @tabla_insert := tabla;
select @dato_insert := dato;
insert into @tabla_insert values (null, @dato_insert);
END $$
DELIMITER ;
DELIMITER $$
---------------------
mi problema radica en la declaracion, asignacion y uso de las variables en el sp, ya que no me valida como variable al momento del insert....
Gracias por su ayuda en como puedo crear este sp, ya que en el ejemplo lo pongo para dos tablas pero en realidad son como 7 tablas que quiero manejar....
Me explico mejor, tengo varias tablas que las llamo maestras, estas contienen un campo id, y un campo texto, por lo que quiero hacer un solo sp para insertar el dato texto en la tabla deseada.
Ya hice uno para hacer select pero, en este caso quiero optimizar el sp llamando una sola vez a la sentencia insert al final, pasandole los valores necesarios.
les dejo la sintaxis de creacion del sp, y el error que me esta dando.
tengo las tablas
ciudad
cui_id int(11) auto_increment
ciu_texto varchar(300)
departamento
depar_id int(11) auto_increment
depar_texto varchar(300)
he intentado las siguientes opciones y en todas me da un error de sintaxis...
---------------------------------
OPCION 1
---------------------------------
DELIMITER $$
CREATE PROCEDURE `orientanet`.`sp_insert_tablas_maestras` (in tabla varchar(50), in dato varchar(300))
BEGIN
declare campo_id varchar(30);
declare campo_texto varchar(30);
case tabla
when 'ciudad' then
campo_id='ciu_id';
campo_texto='ciu_texto';
when 'departamento' then
campo_id='depar_id';
campo_texto='depar_texto';
else select 'Error en tabla ingresada';
end case;
insert into tabla (campo_id, campo_texto) values (null, dato);
END $$
DELIMITER ;
DELIMITER $$
---------------------------------
OPCION 2
---------------------------------
DELIMITER $$
CREATE PROCEDURE `orientanet`.`sp_insert_tablas_maestras` (in tabla varchar(50), in dato varchar(300))
BEGIN
declare campo_id varchar(30);
declare campo_texto varchar(30);
select @tabla_insert := tabla;
select @dato_insert := dato;
case @tabla_insert
when 'ciudad' then
campo_id='ciu_id';
campo_texto='ciu_texto';
when 'departamento' then
campo_id='depar_id';
campo_texto='depar_texto';
else select 'Error en tabla ingresada';
end case;
insert into @tabla_insert (campo_id, campo_texto) values (null, @dato_insert);
END $$
DELIMITER ;
DELIMITER $$
---------------------------------
OPCION 3
---------------------------------
DELIMITER $$
CREATE PROCEDURE `orientanet`.`sp_insert_tablas_maestras` (in tabla varchar(50), in dato varchar(300))
BEGIN
select @tabla_insert := tabla;
select @dato_insert := dato;
insert into @tabla_insert values (null, @dato_insert);
END $$
DELIMITER ;
DELIMITER $$
---------------------
mi problema radica en la declaracion, asignacion y uso de las variables en el sp, ya que no me valida como variable al momento del insert....
Gracias por su ayuda en como puedo crear este sp, ya que en el ejemplo lo pongo para dos tablas pero en realidad son como 7 tablas que quiero manejar....
Valora esta pregunta


0