Programación General > Power Builder
Ejecutar un Store Procedure desde PowerBuilder
maverick2007:
Yeaahhhh... :D
Gracias "El Loco Power" y a todos los muchachos que colaboraron en este tema. Les contare que si funciona el codigo y si pude reportar en power builder el valor devuelto por la funcion... La tendre en cuenta en mis aplicaciones :comp: .
Cualquier duda les hare llegar :smartass: .
Atentamente
Maverick :kicking:
ioxs:
Hola a todos.
Soy nuevo en el foro, les agradeceria si alguien tiene comocimientos de como ejecutar Procedimientos Almacenados de SQl Server 2005 desde PB 10.
No de ejecutarlos con el DataWindows en modo de diseño, sino de llamarlos en tiempo de ejecucion,
Si pudieran pasarme las Sintaxis para ejecutar SP sin y con parametros les estaria Agradecido. mi correo es tacto85@hotmail.com.
Porfavor, la sintaxis completa y como realizar los controles de error.
bueno eso es todo, gracias
----- Lee con atencion esto -----
http://foros.solocodigo.com/index.php?showtopic=5710
;)
Andante:
Hola Amigos como estan bueno aqui les envio la forma como se ejecuta un procedimeinto almacenado en powerbuilder
string llm
datetime ll_f
DECLARE p_mes PROCEDURE FOR SPGENMES
@F = :ll_f,
@MES = :llm OUTPUT;
EXECUTE p_mes;
FETCH p_mes INTO : llm;
CLOSE p_mes;
observaciones
el nombre del procedimiento creado en al base de datos es SPGENMES, en este caso tiene un parametro de entrada y uno de salida que se almacenara en la variable llm
estas variables son de tipo datetime y varchar
edlopez:
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
loveri:
hola tambien lo queria averiguar como llamar a la funcion desde PB creada con sybase, y es facil el codigo lo vi en otro foro pero no esta de menos compartir con ustedes aunque el codigo no estaba exactamente asi pero lo pongo a mi entender
string parametro1, parametro2
select dba.nombre de tu funcion (:parametro1, :parametro2)
into :variable en donde vas a recuperar el return de tu funcion
from nombre de cualquer tabla// puedes elegir una que tenga nada de registro o crear uno temporal
using sqlca;
puedes comprabar si no te lanza nada de sql code
if sqlca.sqldbcode <> 0 then
messagebox(''+string(sqlca.sqldbcode)+'', sqlca.sqlerrtext)
return
end if;
no se olviden de darle permiso de ejecucion a la funcion
saludos desde Paraguay
Navegación
[*] Página Anterior
Ir a la versión completa