1
« en: Lunes 18 de Mayo de 2009, 18:31 »
Buenas Loco Power, a veces la gente hace una pregunta y da un ejemplo muy sencillo para saber como se realiza el llamado y para simplificar y no mandar un sistema de 80000 líneas.
En algunos casos es recomendable dejar que el motor de base de datos realice la consulta, eso puede ser por velocidad o por la generación de un consecutivo de forma única por ejemplo.
El amigo que preguntó acerca de como obtener el resultado:
Dos opciones:
OPCION 1
Esta opción es un poco más lenta ya que el resultado de la ejecución se toma de la salida estandar de un procedimitno
create procedure fu_edad(@edad int)
begin
select @edad = @edad + 1
select @edad
end
Llamarlo desd PW
declare ls_edad_resultado int
declera ls_edad int
ls_edad_resultado = 0
ls_edad = 99
DECLARE pa_edad &
procedure for pa_edad @edad = :ls_edad
EXECUTE pa_edad;
if sqlca.sqlcode < 0 then
MessageBox("Error", "Error " + string(sqlca.sqlcode) + ":" + sqlca.sqlerrtext)
else
FETCH pa_edad INTO :ls_edad_resultado;
CLOSE pa_edad;
end if
MessageBox("Info", "Edad " + string(ls_edad_resultado))
OPCION 2
create procedure fu_edad(@edad int, @salida int OUTPUT)
begin
select @edad = @edad + 1
select @edad
--Asigna el valor al resultado de salida
select @salida = @edad
return 0
end
Llamarlo desd PW
declare ls_edad_resultado int
declera ls_edad int
ls_edad_resultado = 0
ls_edad = 99
DECLARE pa_edad &
procedure for pa_edad @edad = :ls_edad, @salida = :ls_edad_resultado OUTPUT
EXECUTE pa_edad;
if sqlca.sqlcode < 0 then
MessageBox("Error", "Error " + string(sqlca.sqlcode) + ":" + sqlca.sqlerrtext)
else
FETCH pa_edad;
CLOSE pa_edad;
end if
MessageBox("Info", "Edad " + string(ls_edad_resultado))
Muy importante los puntos marcados en rojo