Ver Mensaje Individual
  #3 (permalink)  
Antiguo 01/10/2007, 08:57
mankel
 
Fecha de Ingreso: marzo-2007
Ubicación: Celayork
Mensajes: 38
Antigüedad: 17 años, 2 meses
Puntos: 3
Re: MySQL con InnoDB

Hola foreros, como les va?

Pues sigo con la misma duda...

He intentado retornar el valor de una variable de tipo INT de un stored procedure en MySQL a una aplicación de VB .net 2005. Ya tengo la conexión y todo el rollo, ya puedo grabar en mi BD sin problemas.

Desde VB hago la llamada del stored procedure con esta linea:
Código:
Ejecuta("call ProcInsCta('" & numcta & "','" & txtnombre.Text & "','" & tcuenta & "','" & ctamayor & "','" & fechacuenta & "','" & clase & "','" & subcuenta & "','" & msg & "')")
Donde msg es el parametro OUT de tipo entero para el stored procedure... aqui les paso el procedimiento:

Código:
CREATE DEFINER=`root`@`localhost` PROCEDURE `ProcInsCta`(numcta char(9), nombcta varchar(90), tcuenta char(1), ctamayor int, fechacuenta char(10), clase char(1), subcta char(9), OUT mensaje int)
BEGIN
        #declare mensaje int;
        set @numerocta= NULL, @subctade= NULL, @cmayscta=NULL;
	set autocommit=0;
	start transaction WITH CONSISTENT SNAPSHOT;
	select cuenta into @numerocta from `cont-cuenta` where `cuenta`=numcta;
	if @numerocta = numcta then
                set mensaje = 0;
	else
		insert into `cont-cuenta` (cuenta,nombre,tipo,mayor,fechalta,clase) values (numcta,nombcta,tcuenta,ctamayor,fechacuenta,clase);
		show count(*) errors;
		if @@error_count > 0 then
			rollback;
                        set mensaje = 1;
		else
			if ctamayor<>1 then
				if @subctade <> subcta then
					rollback;
                                        set mensaje = 2;
				else
					if @cmayscta <= ctamayor then
						show count(*) errors;
						if @@error_count > 0 then
							rollback;
                                                        set mensaje = 3;
						else
							commit;
                                                        set mensaje = 4;
						end if;
					else
						rollback;
                                                set mensaje = 5;
					end if; ########
				end if;
			else
				commit;
                                set mensaje = 6;
			end if;
		end if;
	end if;
END
Dentro del procedimiento le asigno a mensaje (parametro de salida de tipo INT) un valor entero, y ese valor lo quiero de regreso en mi aplicacion VB dentro de la variable msg... pero me marca un error, el cual no se si sea por cuestion de MySQL que aun ande mal en el paso de parametros de salida o sea en la forma en la cual llamo al procedimiento... este es el error que me manda:

Código:
OUT or INOUT argument 8 for routine sglamesa.ProcInsCta is not a variable or NEW pseudo-variable in BEFORE trigger
Espero su ayuda :D

Saludos

Última edición por mankel; 01/10/2007 a las 11:09