• Jueves 28 de Marzo de 2024, 20:28

Autor Tema:  Ejecutar un Store Procedure desde PowerBuilder  (Leído 33325 veces)

maverick2007

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Ejecutar un Store Procedure desde PowerBuilder
« en: Jueves 28 de Junio de 2007, 22:46 »
0
Hola
Deseo saber como hacer una llamada a una funcion que tengo en sql server2000. Tengo una funcion que tiene tres parametros de entrada y un parametro de salida.
Les agradezco de antemano
Maverick

maverick2007

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #1 en: Viernes 29 de Junio de 2007, 22:22 »
0
Hola Amigos
Estoy conociendo la programacion de power builder y estoy en la etapa de conectarme con una funcion de sql server2000, pero no se como implementar una funcion en sql server y como seria la llamada desde power builder.
Gracias de antemano.
Maverick

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #2 en: Sábado 30 de Junio de 2007, 06:33 »
0
mira yo no se absolutamente nada de power builder pero te puedo asegurar que la conexión depende del lenguaje que manejes no del manejador de base de datos, lo mejor seria checar san google :P

aqui hay un enlace, pruebalo y suerte:
http://www.experts-exchange.com/Programmin...Q_20939934.html

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #3 en: Sábado 30 de Junio de 2007, 08:13 »
0
Cita de: "ArKaNtOs"
mira yo no se absolutamente nada de power builder pero te puedo asegurar que la conexión depende del lenguaje que manejes no del manejador de base de datos, lo mejor seria checar san google :P

aqui hay un enlace, pruebalo y suerte:
http://www.experts-exchange.com/Programmin...Q_20939934.html
Muy cierto aunque con algunos detalles  :rolleyes:


1- creo que no ha preguntado como conectarse  :unsure:  sino como ejecutar una funcion de SQL server desde PowerBuilder  :rolleyes:

2- La pagina que enviaste es un foro donde cobran por ver las respuestas :P

3- Lo de buscar en google es indiscutible :P


si es lo que creo lo que quieres es ejecutar un SP de SQL Server?  :unsure:


en PB8,9,10  ¿Cual es tu Version?

puedes hacer lo de esta manera

Sintaxis:

SQL Server
Código: Text
  1.  
  2. DECLARE logical_procedure_name PROCEDURE FOR
  3. SQL_Server_procedure_name
  4. @Param1 = value1, @Param2 = value2 ,
  5. @Param3 = value3 OUTPUT,
  6. {USING transaction_object} &#59;
  7.  

ODBC
Código: Text
  1.  
  2. DECLARE logical_procedure_name PROCEDURE FOR
  3.   procedure_name
  4.   {@param1 = value, @param2 = value2, ...}
  5.   {USING transaction_object};
  6.  


Ejemplos:

Código: Text
  1.  
  2.  
  3. DECLARE sp_duration PROCEDURE FOR pr_date_diff_prd_ken
  4.  
  5. @var_date_1 = :ad_start,
  6.   @var_date_2 = :ad_end,
  7.   @rtn_diff_prd = :ls_duration OUTPUT;
  8.  


Código: Text
  1.  
  2. DECLARE pb_SP_Clientes PROCEDURE FOR
  3.   SP_LISTADO_CLIENTES (:sucursal)
  4. USING SQLCA;
  5.  
  6. EXECUTE pb_SP_Clientes;
  7.  

Segun los resultados devueltos puedes usarlo como un cursor

Tambien seria bueno que le dieras una leida a la ayuda de PB

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #4 en: Sábado 30 de Junio de 2007, 17:49 »
0
Lo siento, la verdad no me fije bien, es que fue de las primeras paginas q me retorno san google camarada :P sorry

maverick2007

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #5 en: Miércoles 4 de Julio de 2007, 04:33 »
0
Hola a todos
Quisiera comenzar agradeciendo a ArKaNtOs y F_Tanori por sus aportes.. pues les contare que hize lo que me aconsejaron y nada.
F_Tanori utilize tu codigo pero no funciono.. aqui te mando lo quiero realizar para que me des alguna sugerencia:
Creo una funcion de usuario en SQL Server2000:
create function fu_edad (@edad int)
returns INT
AS
BEGIN
set @edad=@edad + 1
RETURN @edad
END

y hago el siguiente llamado en Power Builder
integer a;
DECLARE fedad PROCEDURE FOR fu_edad @edad=15, @edad=a OUTPUT;
EXECUTE fedad;
sle_1.text = string(a)

y te contare que me da como resultado siempre CERO (0).
Gracias por la ayuda.
PD. Les comento que en la anterior discusion quise responderlos.. pero no puedo porque no tengo acceso a esa opcion.. no se porque??. Por ello he tenido que aperturar una nueva discusión

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #6 en: Miércoles 4 de Julio de 2007, 13:22 »
0
de power builder no se nada, pero creo que cuando se hace el llamado a una funcion de  SQL , al nombre de la funcion se le antepone dbo..

Si estoy mal, corrijanme.


BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

El Loco Power

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #7 en: Miércoles 4 de Julio de 2007, 20:36 »
0
Bueno, La verdad es que en PB no se utiliza mucho las funciones puesto que este tipo de lógica(como muestras en tu consulta) facilmente se pueden construir en una funcion hecha con powerscript.
En Conclusion: Traslada tu lógica a una funcion global hecha en el mismo PB.

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #8 en: Miércoles 4 de Julio de 2007, 21:14 »
0
colocale los dos puntos a la a
<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->integer a;
DECLARE fedad PROCEDURE FOR fu_edad @edad=15, @edad=:a OUTPUT;
EXECUTE fedad;
sle_1.text = string(a)
<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->
ademas estas afectando el mismo parametro @edad le estas enviando 15 y luego el valor de a prueba retonrando el valor en otro parametro



o prueba de esta manera

Código: Text
  1. DECLARE pb_SP_edad PROCEDURE FOR
  2.   fu_edad (:edad)
  3. USING SQLCA;
  4.  
  5. EXECUTE  pb_SP_edad;
  6.  
  7. if SQLCA.SQLCode=0 then
  8.    Fetch pb_SP_edad INTO :a;
  9.    close pb_SP_edad;
  10.    sle_1.text = string(a)
  11. end if
  12.  

Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

maverick2007

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #9 en: Miércoles 4 de Julio de 2007, 23:44 »
0
Hola a todos
Gracias por sus aportes. F_Tanori realize lo que me sugeriste y el valor que devuelve el dqlca.sqlcode es = 100, indicandome que "Ningunas filas califican para la operación de DML (no se aplica a los comandos dinámicos) "
por ello en el codigo que me diste..

if SQLCA.SQLCode=0 then
  Fetch pb_SP_edad INTO :a;
  close pb_SP_edad;
  sle_1.text = string(a)
end if

nunca ingresa.. y no muestra la respuesta correcta.
No quisiera caerte espeso F_Tanori, lo que pasa es que me interesa conocer esto.
gracias por todo
Maverick
PD. Nuevamente utilizo otra discusion porque no puedo responderlos

El Loco Power

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #10 en: Jueves 5 de Julio de 2007, 00:00 »
0
TE RECOMIENDO LA FUNCION GLOBAL  EN POWER, DUDO MUCHO QUE PUEDAS LLAMAR UNA FUNCION HECHA EN SQL COMO UN PROCEDIMIENTO ALMACENADO EN POWER, SON DOS COSAS DISTINTAS.

maverick2007

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #11 en: Jueves 5 de Julio de 2007, 02:25 »
0
Hola muchachos
Te entiendo "El Loco Power", pero yo se que cuando realizas procedimientos almacenados y es llamado por los programas.. estos son mas rapidos. Igual es si realizo las funciones en sql server, mi aplicacion sera mas rapida.. por ello mi interes en aprender el llamado de una funcion de usuario desde power builder. Bueno eso me comentaron, si alguien conoce que no es asi.. corriganme por favor.
Saludos...  ;)

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #12 en: Jueves 5 de Julio de 2007, 08:45 »
0
bueno lo que se esta haciendo mas cansado es estar uniendo los mensajes, pues estas abriendo una discucion cada vez que respondes y no es necesario....

si tienes problemas con el foro para publicar, prueba utilizando otro navegador (yo uso Firefox y anda muy bien), y si siges teniendo problemas, reporta las aqui


http://foros.solocodigo.com/index.php?showforum=1

indicando cual es tu error....


Con respecto a tu duda el segundo codigo es la manera en que yo he utilizado los SP de SQL server, revisa que te este devolviendo valor, revisa la documentacion de PB verifica como se usan en tu version para ver que estas haciendo mal

Las aplicaciones "teoricamente" son mas rapidas asi, pero tambien existe un tiempo que el lenguaje tardara en procesar los resultados (como si hubieras hecho un cursor)

pero favorese mucho a la programacion en "3 capas"


Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

El Loco Power

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #13 en: Jueves 5 de Julio de 2007, 22:16 »
0
Por lo que veo es una funcion muy pequeña, bueno a mi parecer por lo tanto dudo que exista tanta diferencia que se haga desde Pb con respecto a Sql.
No te Compliques tanto. Pero de Todos Modos es una buen punto el saber como se llama una funcion, pero es jalado de los pelos que se pueda con una sentencia de llama procedimientos almacenados desde power builder.

El Loco Power

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #14 en: Martes 10 de Julio de 2007, 18:03 »
0
realiza lo sgte(bd=base de datos,param = parametro):

integer li_edad
string ls_sql

ls_sql = "SELECT bd.dbo.fu_edad(param)"

DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA;

PREPARE SQLSA FROM :ls_sql;

OPEN DYNAMIC my_cursor;

FETCH my_cursor INTO :li_edad;

CLOSE my_cursor;

messagebox("",li_edad) B)

maverick2007

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #15 en: Viernes 13 de Julio de 2007, 01:56 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #16 en: Sábado 20 de Octubre de 2007, 22:09 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #17 en: Martes 16 de Septiembre de 2008, 01:23 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #18 en: Lunes 18 de Mayo de 2009, 18:31 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Ejecutar un Store Procedure desde PowerBuilder
« Respuesta #19 en: Miércoles 22 de Septiembre de 2010, 20:41 »
0
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