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

Update tabla desde un stored procedure

Estas en el tema de Update tabla desde un stored procedure en el foro de Mysql en Foros del Web. Buenas, Tengo una tabla en la que quiero cambiar unos datos que cojo de un stored procedure ¿se puede hacer? Os pego el ejemplo de ...
  #1 (permalink)  
Antiguo 14/06/2009, 13:18
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Update tabla desde un stored procedure

Buenas,

Tengo una tabla en la que quiero cambiar unos datos que cojo de un stored procedure ¿se puede hacer? Os pego el ejemplo de lo que quiero hacer.
Código:
CREATE  PROCEDURE `TMPLIQ`(IN LIQUIDACION INTEGER, IN VENDEDOR VARCHAR(50))
BEGIN
SELECT TABLA1.BOLETIN, TABLA1.CO_TIENDA, TABLA1.COMISION, TABLA2.VENDEDOR
FROM TABLA1 INNER JOIN TABLA2
ON TABLA1.BOLETIN = TABLA2.BOLETIN AND TABLA1.CO_TIENDA = TABLA2.CO_TIENDA
WHERE TABLA1.CO_LIQUIDACION = 2009001 and TABLA2.VENDEDOR ='PEPE';
END;

UPDATE TABLA1 INNER JOIN TMPLIQ ON TABLA1.CO_TIENDA=TMPLIQ.CO_TIENDA AND TABLA1.BOLETIN=TMPLIQ.BOLETIN SET
TABLA1.COMISION = (TMPLIQ.COMISION / 10);  

'tmpliq es un storedprocedure
No se si se podrá hacer un update desde un stored procedure... ¿que me decis?
  #2 (permalink)  
Antiguo 14/06/2009, 14:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Update tabla desde un stored procedure

No puedes hacer un JOIN entre una tabla y un Stored Procedure, son objetos distintos.
Tampoco puedes hacerlo porque el SP devuelva una tabla. El parser no lo admite porque un SP no tiene siempre como salida una tabla...
Además, si lo que quieres es actualizar un dato de la misma tabla que consultas en el SP, ¿por qué no hacer el UPDATE en el SP?
Y en tercer lugar, el UPDATE que pones no está haciendo ninguna actualización. No hace nada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 14/06/2009, 14:10
 
Fecha de Ingreso: noviembre-2008
Ubicación: Lima
Mensajes: 48
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: Update tabla desde un stored procedure

el update puedes hacer pero dentro de ese procedimiento haciendo uan subconsulta
  #4 (permalink)  
Antiguo 16/06/2009, 12:23
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Update tabla desde un stored procedure

OK, gracias,

al final he hecho una consulta algo complicada con el update dentro del Sp pero al final me ha funcionado.
  #5 (permalink)  
Antiguo 16/06/2009, 14:19
 
Fecha de Ingreso: mayo-2009
Mensajes: 13
Antigüedad: 14 años, 11 meses
Puntos: 0
Stored procedure en hosting no funciona

Buen dia, quisiera saber si me pueden ayudar en este problema que tengo.

tengo una stored procedure sencilla como esta con un insert:

CREATE DEFINER=`someuser`@`localhost` PROCEDURE `NUEVO_REGISTRO`(IN Clave VARCHAR(50), IN Descripcion VARCHAR(255))
BEGIN
INSERT INTO SOME_TABLE (columna_clave,columna_seccion) VALUE(Clave,Descripcion);
END;


cuando le permito a un usuario mysql en mi computadora ejecutar este rutina, sin permisos de insert, la ejecuta exitosamente y cuando el usuario quiere insertar directamente sobre la tabla no se lo permite por el permiso dado.

Ahora cuando intento realizar lo mismo sobre mi hosting.

me permite ejecutar el procedimiento almacenado y cuando llega al insert no lo ejecuta debido a los permisos dados por elhosting, por lo tanto tengo que tener forzosamente permitido ejecutar la directiva insert para ejecutar exitosamente mi procedimiento almacenado.

he probado con

GRANT EXECUTE ON PROCEDURE DB1.NUEVO_REGISTRO TO 'otrousuario'@'localhost';

pero debe estar presente el permiso de insertar para poder ejecutar esta rutina por este usuario y no pasa con el localhost de mi computadora.

espero puedan ayudarme de antemano mil gracias.
  #6 (permalink)  
Antiguo 16/06/2009, 15:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Update tabla desde un stored procedure

Los permisos se dan en dos niveles:
A nivel del objeto, implica tener permisos para una una base o conjunto e bases, una tabla o conjunto de tablas, ciertas rutinas, etc. Esos son los permisos de objeto.
El otro nivel es el de usuario. Un usuario tiene permisos sobre los objetos, pero solamente si su host es el que figura en la tabla de permisos
Cuando das permisos a un usuario en localhost, significa que debe logearse directamente en la máquina servidor. Si se conecta desde otra, por más que las rutinas se ejecuten localmente, el usuario está en remoto, por lo que no tiene permisos de ejecución (a menos que se los den).
Asimismo, si un usuario se creó con permisos remotos, no puede loguearse y ejecutar nada en localhost...

¿Se comprende la idea?
Solamente un usuario puede loguearse y ejecutar rutinas desde cualquier parte si específicamente se lo creó con esa propiedad (usuario@%). Elpermiso global de uso remoto, no es un permiso por default. Y menos en el EXECUTE.
Son cuestiones de seguridad.

Tendrás que analizar y verificar que la tabla de permisos cumple con lo que necesitas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 13/09/2011, 05:47
 
Fecha de Ingreso: abril-2009
Ubicación: Bogota
Mensajes: 18
Antigüedad: 15 años
Puntos: 0
Respuesta: Update tabla desde un stored procedure

Cordial saludo gnzsoloyo.
Ojala me puedas ayudar, mi problema es el sgte:
Tengo una BD con un campo Nombre=(Nombre1, Nombre2, Apell1, Apell2) y tengo que dejarlo asi: (Nombres, Apell1, Apell2) y MySql no tiene una funcion que haga esa division. Entonces estoy haciendo un programa en Java para tal fin y tratando de usar lo aprendido quiero usar un SP que es el sgte:
DROP PROCEDURE IF EXISTS Actualiza;

DELIMITER//
CREATE PROCEDURE Actualiza
(
IN sp_papellido CHAR(15),
IN sp_sapellido CHAR(12),
IN sp_nombres CHAR(25)
)
BEGIN
UPDATE cargar_1_encrypt
SET
papellidos = sp_papellidos,
sapellidos = sp_sapellidos,
nombres = sp_nombres
END
DELIMITER ;//

pero me arroja error.
Estoy apenas comenzando con Java y MySql si me puedes decir porque falla al ejecutarlo te agradezco.
Con lo leido aqui creo que el SP deberia hacer un select con una sub consulta de actualizacion (o alcontrario) pero no se como hacer esa parte.
Si me puedes ayudar te estare altamente agradecido.
GustavoV
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 10:02.