MySQL - store procedure-parametro de salida

 
Vista:

store procedure-parametro de salida

Publicado por jose (8 intervenciones) el 17/05/2008 12:55:22
hola quiesiera saber como puedo hacer desde php para tomar un parametro de salida en un store procedure :

CREATE PROCEDURE `sp_abm_rol_usuarios`( INOUT par_id_grupo integer (11),
par_descripcion varchar(25),
par_abm INTEGER(1)
)
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT 'abm para grupos o rol de usuarios '

BEGIN

/* Alta = 1
Modificacion = 2
Eliminacion = 3
*/
/* alta de un usuario*/
IF par_abm = 1 THEN

INSERT INTO tb_grupo (descripcion) VALUES (par_descripcion);


END if;


END;

luego desde php lo llamo asi:
$insert = "call sp_abm_rol_usuarios(1,'$descripcion','$id_grupo')";
$result = mysql_query ($insert,$id_enlace);
y quero tomar el id_grupo insertado, lo cual puedo hacerlo con last_insert_id()

pero no se como tomarlo desde php , me da error en la creacion del store
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:store procedure-parametro de salida

Publicado por Gonzalo GC (339 intervenciones) el 17/05/2008 16:56:56
En principio, has definido la dirección del PRIMER parámetro, pero no la de los otros dos.
_En segundo lugar, el script de creación debe, si tiene más de una línea de código, contener una primera línea para cambiar el delimitador de sentencias momentáneamente: (por ejemplo)
DELIMITER $$
Luego el cuerpo:
CREATE PROCEDURE `sp_abm_rol_usuarios`( INOUT par_id_grupo integer (11), IN par_descripcion varchar(25), IN par_abm INTEGER(1))
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT 'abm para grupos o rol de usuarios '

BEGIN
/*
Alta = 1
Modificacion = 2
Eliminacion = 3
*/
/* alta de un usuario*/
IF par_abm = 1 THEN
INSERT INTO tb_grupo (descripcion) VALUES (par_descripcion);
END IF;
END;

Y cerrarlo con el recambio de delimitador:

DELIMITER ;

Eso no lo veo en el script. ¿Lo pusiste?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:store procedure-parametro de salida

Publicado por jose (8 intervenciones) el 17/05/2008 19:39:36
NO LA VERDAD QUE NO PUSE LOS DELIMITADORES, SI LOS COLOCO ME SALE ERROR Y NO SE EJECUTAN, NO SE SI SERA LA IDE, ESTOY USANDO MYSQL TURBO MANAGER ENTERPRICE, y mi duda es una ves creado un store necesito un parametro de salida para tomar el ultimo registro insertado en una tabla. y colocarlo en otra con otros parametros para hacer un seguimiento de los movimientos de los usuarios, pero necesito tomarlo desde php si pudieras ayudarme te lo agradeceria muchisimo

gracias y un abrazo muy grande

gracias por responderme!!!

jose!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:store procedure-parametro de salida

Publicado por Gonzalo GC (339 intervenciones) el 17/05/2008 23:43:46
Vamos por partes:
- La GUI que uses no tiene importancia. Las interfases solamente son un modo de "ver" lo que se hace en la base, pero los procesos ocurren dentro del encapsulamiento de la base misma. La GUI no puede verlos, solamente a sus resultados.
- La creación de procedimientos almacenados se realiza una sola vez. No en cada vuelta que se requieran ¿Eso lo tienes claro? Esto es porque quedan almacenados EN la base en forma permanente. Igual que las VIEW.
- La creación de un SP es la ejecución de un script de 4 partes: a) destrucción de cualquier versión vieja del SP; b) cambio de delimitadores, para que no se corte la carga del SP hasta que ingrese el END; c) Cuerpo propiamente dicho del SP, terminado con un END seguido de los nuevos delimitadores; y d) Regresar a los delimitadores originales, para que no haya problemas con sentencias sucesivas.
- Una vez creado, simplemente hay que usarlo. No se requiere su creación cada vez. Lo que SI SE REQUIERE es que el usuario tenga, tanto para crearlo como para usarlo privilegios de EXECUTE y CREATE para los PROCEDURE.
- El encabezado (prototipo) de un SP contiene los parámetros de entrada., que pueden ser entrada (IN), salida (OUT) o entrada-salida (INOUT). Los parámetros de entrada y entrada-salida vuelven, por default, en las mismas variables en que se están ingresando. Pero eso es un problema que manejan los conectores (.NET, ODBC, etc.). Es en los métodos de los conectores donde te tienes que fijar para solucionar el problema.
- Los SP pueden devolver un valor o más de un valor, siempre en forma de TABLAS (aunque sea de un sólo campo), pudiéndose recuperar el resultado del SP como se recupera cualquier tabla en la aplicación. La única diferencia es que en vez de ser llamado por medio de un "SELECT... FROM.." en una qwery, se debe poner en el string "CALL NombreDelSP(" + variables separadas por comas como strings "," + el string ");", (dando por entendido que "NombreDelSP" es el nombre que tú le hayas puesto al SP). En ese caso el SP actúa devolviendo lo que la última sentencia del SP indique y que TIENE que ser un SELECT para que ello ocurra.
- Si lo que se desea es recuperar UN valor que no sea en una tabla, debe crearse una FUNCTION, que tiene una sintaxis parecida al SP, pero que termina siempre con un RETURN y el dato del tipo indicado en el prototipo (CREATE FUNCTION (variable TIPO, variable2 TIPO, ... variableN TIPO) RETURNS TipoDeDato). Como no pueden retornar valores por las variables de entrada, estas son SIEMPRE de entrada (IN) y no hace falta escribirlo.

Si algo de lo que digo ya lo sabes, perdona la insistencia. No sé a priori cuál es tu nivel de experiencia y preparación en bases de datos. Estoy dando consejos un poco a ciegas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:store procedure-parametro de salida

Publicado por jose (8 intervenciones) el 18/05/2008 01:40:37
gracias gonzalo aparente mente el proceblema esta entonces en el odbc voy a tratra de otra forma gracias por tu ayuda
un abrazo grande y muchas pero muchas gracias en serio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:store procedure-parametro de salida

Publicado por jose (1 intervención) el 06/06/2008 01:29:04
hola espero me puedan resolver una duda soy estudiante de info y no puedo crear procdures de eliminacion y modificacion me pueden decir como? se los agradecera bastante gracias

mario
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:store procedure-parametro de salida

Publicado por Chiquito (1 intervención) el 04/10/2011 03:48:01
Me da gracia porque hablaste sobre SP, Function pero no le respondiste a José. O será que no entendiste la pregunta? Bueno, como sea ya pasó mucho tiempo: solo que me dió gracia tu respuesta, tan... "política".
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar