MySQL Forums
Forum List  »  Spanish

Re: Procedimiento almacenado-> guardar o actualizar
Posted by: Javier Piña
Date: March 05, 2020 10:39AM

hola, bueno tras ver varios sitios con este tipo de información logre hacer algo pero aún así tengo dudas de esto.

si bien explique vagamente lo que intento de hacer (no sé por que cree el hilo sin saber un poco más.. perdon por el primer post). pero en concreto es:

tengo una tabla que para poder ingresarle datos, esto tiene que pasar por una serie de condiciones como; si el playas_id_playas no existe, el insert de aplica sin problema, en caso que que si exista, nos fijamos que uno de los datos de la tabla tiene que ser diferente priority_cam y aplicamos el insert.
en ambos casos el insert no viene con los valores de camPowerOn y camPowerOff, ya que la tabla los crea por defecto. ahora si el insert viene con estos datos y si playas_id_playas coincide con el del insert actualizo los valores de camPowerOn y camPowerOff sin modificar el resto columna de la tabla. Aqui me genera una duda, si aplico un update de camPowerOn y camPowerOff pero solo uno de estos viene con valor... y sabiendo que la tabla tiene para estos datos un is not null me crea un error o solo actualizaria el dato con valor??
pues bien para esto he creado el siguiente procedimiento, pero no se si va bien

CREATE PROCEDURE controlInsertInto
(
/*ME SALE ERRRO CON LA DECLARACION DE ESTAS VARIABLES*/
@tipo_camara VARCHAR(45),
@meteorologic_stations BIT(1),
@priority_cam VARCHAR(45),
@camPowerOn TIME,
@camPowerOff TIME,
@playas_id_playas INT(10)
)
AS
IF NOT EXISTS (SELECT * FROM TestV1.processing_unit
WHERE playas_id_playas = @playas_id_playas)
BEGIN
INSERT INTO TestV1.processing_unit
VALUE (@tipo_camara,@meteorologic_stations,@priority_cam,@playas_id_playas)
END
ELSE IF (EXISTS (SELECT * FROM TestV1.processing_unit
WHERE playas_id_playas = @playas_id_playas
AND priority_cam != @priority_cam)
BEGIN
INSERT INTO TestV1.processing_unit
VALUE (@tipo_camara,@meteorologic_stations,@priority_cam,@playas_id_playas)
END
ELSE IF (
EXISTS (SELECT * FROM TestV1.processing_unit
WHERE playas_id_playas = @playas_id_playas)
AND (@camPowerOn IS NOT NULL OR @camPowerOff IS NOT NULL)
)
BEGIN
UPDATE TestV1.processing_unit SET
camPowerOn = @camPowerOn,
camPowerOff = @camPowerOff
WHERE playas_id_playas = @playas_id_playas
END

Options: ReplyQuote


Subject
Views
Written By
Posted
Re: Procedimiento almacenado-> guardar o actualizar
228
March 05, 2020 10:39AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.