• Viernes 17 de Abril de 2026, 03:28

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - edlopez

Páginas: [1]
1
Power Builder / Re: Ejecutar un Store Procedure desde PowerBuilder
« 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

Páginas: [1]