declare procedure power builder - firebird

390 views
Skip to first unread message

solin castillo

unread,
Jul 28, 2011, 4:22:29 PM7/28/11
to PowerBuilder - Ica
Amigos del grupo powerbuilder - ica

Trabajo con POWER BUILDER y FIREBIRD, estoy añadiendo por primera vez
procedimientos almacenados a mi sistema.

Yo solo le paso 2 argumentos a mi procedimiento que devuelve 3
variables(en base de datos el procedure funciona perfectamente), pero
en el power no me acepta colocar las 2 variables de entrada; solo 1
argumento nada mas; si coloco los 2 me sale el siguiente mensaje de
error :


Database C0038: SQLSTATE = HY000 Dynamic SQL Error SQL error code =
-104 Token unknown - line 1, char 1{call}


Este es mi codigo en PB:

DECLARE pb_acceso_usuario PROCEDURE FOR
SP_ACCESO_VALIDA_DATOS_USUARIO (:gs_cod_usuario,:ls_password);
execute pb_acceso_usuario;

if SQLCA.sqlcode = 0 then
FETCH pb_acceso_usuario INTO :ln_count,:gs_des_usuario,:ls_estado;
CLOSE pb_acceso_usuario;
end if

Lo unico raro es que cuando intento guardar los cambios el POWER
BUILDER me pregunta si deseo ignorar ese error en el procedure, si le
doy que SI, me ejecuta normal y me extrae las 3 variables CON
NORMALIDAD.
Imagino que el sistema NO DEBERIA TENER NINGUN MENSAJE DE ERROR A
IGNORAR...pues a la larga puede tener problemas serios, todo deberia
estar sin errores, por eso me preocupa ese mensaje de error...

Por favor indiquenme SI TIENEN IDEA DE COMO SOLUCIONAR ESTE PROBLEMA

Agradezco de antemano sus respuesta

Saludos

Fatima Villamayor

unread,
Aug 1, 2011, 2:21:13 PM8/1/11
to powerbui...@googlegroups.com
Hola Solin... Sos la misma persona q posteo en La Web del Programador verdad?....

--
Has recibido este mensaje porque estás suscrito al grupo "PowerBuilder - Ica" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a powerbui...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a powerbuilder-i...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/powerbuilder-ica?hl=es.


Fatima Villamayor

unread,
Aug 1, 2011, 3:07:06 PM8/1/11
to powerbui...@googlegroups.com

Prueba asi.... .


DECLARE pb_acceso_usuario PROCEDURE FOR
SP_ACCESO_VALIDA_DATOS_USUARIO (:gs_cod_usuario,:ls_password);
connect using SQLCA;

execute pb_acceso_usuario;

if SQLCA.sqlcode = 0 then
FETCH pb_acceso_usuario INTO :ln_count,:gs_des_usuario,:ls_estado;
CLOSE pb_acceso_usuario;
end if

Tambien debes fijarte en los tipos de datos que le pasas desde el power al firebird, asegurate q sean los mismos
tipos lo q reciba como parametro el SP

Oscar Camargo Rodriguez

unread,
Aug 1, 2011, 3:29:43 PM8/1/11
to powerbui...@googlegroups.com
Checa si en la conexion de tu database de pb puedes visualizar en procedimiento... trata de ejecutarlo desde ahi.
--
 

OSCAR CAMARGO RODRIGUEZ

Contácto vía e-mail                                                        Web
GMAIL: ocry...@gmail.com           Dominio y Hosting:  www.KeroHost.com
YAHOO: osca...@yahoo.es Radio On-Line: www.Zonaretrofm.com

MSN: osca...@hotmail.com
SKYPE: oscarcamargorodriguez

Lima - Perú

 


Joel Caceres Pujaico

unread,
Aug 1, 2011, 5:27:20 PM8/1/11
to powerbui...@googlegroups.com
En realidad sería de la siguiente manera:
 
DECLARE pb_acceso_usuario PROCEDURE FOR
SP_ACCESO_VALIDA_DATOS_USUARIO
@argumento1 = :gs_cod_usuario,
@argumento2 = :ls_password;
 
//haber pruebalo //

execute pb_acceso_usuario;

Fatima Villamayor

unread,
Aug 1, 2011, 5:34:02 PM8/1/11
to powerbui...@googlegroups.com
Joel: Si trabajas con firebird le pasas los parametros como  lo hizo SOLIN.

solin castillo

unread,
Aug 4, 2011, 2:14:54 PM8/4/11
to powerbui...@googlegroups.com
Amiga Fatima te comento que no pude solucionar el problema de la forma que me indicaste pues coloqué el codigo y sigue saliendo este error:(lo dejo para ver si alguien lo solucionó de otra manera)
Database C0038: SQLSTATE = HY000[ODBC Firebird Driver][Firebird]Dynamic SQL ErrorSQL error code = -104Token unknown - line 1, column 1{call

Ese es el mensaje de alerta que me sale pues si ignoro este mensaje y ejecuto, todo funciona normal.

Ahora he creado salidas propias para la solución del problema de 2 formas, te comento :

1. cuando quiero obtener resultados o variables de la base de datos lo llamo con un select asi:
select cont_user,des_user,estado_user
into :ln_count,:gs_des_usuario,:ls_estado
from SP_ACCESO_VALIDA_DATOS_USUARIO(:gs_cod_usuario,:ls_password);

donde los campos de mi select son las variables de salida de mi procedure.


2. cuando solo deseo insertarle datos y no recibir respuesta(para incersiones solamente aunque no he probado si de la forma 1 tambien puedo hacer SOLO incersiones). Lo hago así:
2.1 Primero creo un objeto transaccion donde declaro mi procedure en local external, por ejemplo:
subroutine SP_ACCESO_INSERT_USER_ADMIN(string COD_USER,string DES_USER,string APE_USER,string CLAVE_USER,string USER_CREA) RPCFUNC

este procedure solo inserta datos 

Luego desde mi power script lo llamo y le envio su parametros asi:
sqlca.sp_acceso_insert_user_admin('ADMIN','ADMINISTRADOR','NULL','ADMIN','ADMIN');

OJO este procedure inserta un registro(claro si no existe)

Realizado asi, no tengo ningun mensaje de error y todo se ejecuta perfecto.
ESPERO ESTAR HACIENDO BIEN

Saludos desde Peru y muchas gracias por las respuestas Fatima y a todos

Fatima Villamayor

unread,
Aug 19, 2011, 10:23:03 AM8/19/11
to powerbui...@googlegroups.com
Gracias por compartir tus metodos de solucion Solin... en una oportunidad logre llamar al sp de la forma "NORMAL" (como lo haria para SQL SERVER) y me ha funcionado... pero en otra ocacion donde tuve q enviar como parametros fechas otra fue la historia... salia el mismo error que muestras... tampoco nunca llegue a comprender el porque... pero como lo hiciste me ingenié para encontrar otra salida... y todo salio muy bien... si no tienes errores y retorna lo que necesitas se supone es una buena salida...
Firebird tiene sus vueltas... y hay poquisisma informacion en la web sobre esta herramienta..
Asi que estaremos en contacto para futuros Database ERROR jajaj...
Saludos!!
Reply all
Reply to author
Forward
0 new messages