You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to publice...@googlegroups.com
Buenos Dias ante todo tengo un problema, con los SP de Oracle, tengo una conexion ls_conn = 'DRIVER=Microsoft ODBC for Oracle; UID='+g_dbuser+'; PWD='+g_dbpssw+'; SERVER='+g_dbconn g_cnx = SQLSTRINGCONNECT(ls_conn) no tengo problemas con la conexion tengo una variable donde coloco la instruccion a ejecutar en Oracle para que llame al SP, que lo llamo procedure 1
lc_instruccionSQL = "EXEC procedure1('1','29')"
este procedure tiene una estructura: Procedure1 (P_CodCia in CON_CAC_CAJACHICA.CIA_NCODIGO%TYPE ,P_CodPeriodoMes in CON_CAC_CAJACHICA.CPM_NCODIGO%TYPE , Cur_CajaChica Out T_Cursor) para ejecutarlo: sqlresult = SQLEXEC(g_cnx,lc_instruccionSQL) pero no llego a capturar el cursor que me esta retornando y justo tengo ese problema como capturo el cursor, y llego a ejecutar el SP de una manera efectiva
extremo
unread,
Jul 18, 2012, 1:26:42 PM7/18/12
Reply to author
Sign in to reply to author
Forward
Sign in to forward
Delete
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to publice...@googlegroups.com
Hola No capturas tu cursor porque al comando sqlexec le falta un parametro, te envio un ejemplo para que pruebes sqlresult = SQLEXEC(g_cnx,lc_instruccionSQL ,"MiCursor")
Para saber si tu SP fue exitoso coloca lo siguiente despues del comando
if sqlresult = -1 aerr(arr) messagebox("ocurrio el siguiente error:" + arr(2)) endif
Bendiciones
ttw
unread,
Jul 18, 2012, 1:35:31 PM7/18/12
Reply to author
Sign in to reply to author
Forward
Sign in to forward
Delete
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to publice...@googlegroups.com
Hola y gracias por responder, tambien utilize esta opcion de poner cursor y de igual forma me arroja el error porque para la opcion de capturar poner el curso lo uso sin llamar al SP de esta forma sqlresult = SQLEXEC(g_cnx,"select * from tabla Where condicion" ,"MiCursor") pero lo que quiero es dejar se usar esa forma y llamar a un SP pero no logro ejecutar el SP
Walter R. Ojeda Valiente
unread,
Jul 18, 2012, 1:46:50 PM7/18/12
Reply to author
Sign in to reply to author
Forward
Sign in to forward
Delete
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to publice...@googlegroups.com
Tu Procedure1 requieres de tres parámetros y le envías solamente dos.
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to publice...@googlegroups.com
Segun lo que yo veo, el 3er parametro del SP es de tipo T_CURSOR, es decir, que te devuelve o bien un ID de un cursor con los datos resultantes, o bien un conjunto de filas; VFP no es compatible con ninguno de los dos casos.
Una situacion similar sucede en SQL Server con el tipo TABLE. Es posible definir un stored procedure que contenga un parametro de tipo TABLE, mediante el cual es posible pasarle DataSets completos al SP... pero desde VFP esto no es soportado, por lo que al invocar un SP con ese tipo de parametros se genera un error.
Saludos
Victor Espina
Victor Espina
unread,
Jul 18, 2012, 3:41:28 PM7/18/12
Reply to author
Sign in to reply to author
Forward
Sign in to forward
Delete
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to publice...@googlegroups.com
Antes que se rasguen las vestiduras: cuando digo que "VFP no es compatible con ninguno de los dos casos" no me refiero a que VFP no pueda recibir un conjunto de datos desde Oracle, MySQL, SQL Server, etc, porque obviamente SI puede.
Lo que digo es que VFP no es compatible con PARAMETROS tipo cursor, table o similares.
Saludos
Victor Espina
ttw
unread,
Jul 18, 2012, 4:11:34 PM7/18/12
Reply to author
Sign in to reply to author
Forward
Sign in to forward
Delete
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to publice...@googlegroups.com
Entonces en este caso Como podria realizar la funcion con el SP para que me devuelva los Datos que necesito. ya sea desde cualquier DB, Gracias
Fox Learner
unread,
Jul 18, 2012, 4:48:12 PM7/18/12
Reply to author
Sign in to reply to author
Forward
Sign in to forward
Delete
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to publice...@googlegroups.com
Encontré sobre el lenguaje de Oracle PL/SQL que utiliza para los procedimientos almacenados.. supongo que eso son los SP (Store Procedures).
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to publice...@googlegroups.com
No puedes; al menos no desde VFP. Entre las posibles soluciones esta crear otro SP que reciba los primeros dos parametros, invoque el SP real y luego devuelva los datos obtenidos en el 3er parametro mediante un SELECT. Otra solucion podria ser crear una clase en .NET que invoque el SP y devuelva los datos en forma de un DataSet, y luego invocas esa clase desde VFP.
Saludos
Victor Espina
Fox Learner
unread,
Jul 18, 2012, 11:44:55 PM7/18/12
Reply to author
Sign in to reply to author
Forward
Sign in to forward
Delete
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to publice...@googlegroups.com
Si va a usar C# para pasar parametros a Visual Foxpro, el amigo Turbi Soft lo logro de esta forma:
Aunque, como dije, yo me iria por la via del SP "intermedio".
Saludos
Victor Espina
Samuel San Miguel Hernández
unread,
Jul 19, 2012, 3:07:43 PM7/19/12
Reply to author
Sign in to reply to author
Forward
Sign in to forward
Delete
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to publice...@googlegroups.com
Para ejecutar SP incluidos en Paquetes:
*================== * Forma cadena TSQL * *================== TEXT TO lc_instruccionSQL TEXTMERGE NOSHOW {Call procedure1(?'1',?'29',?@pzc_Tabla)} ENDTEXT
*================== * En la cabecera de tu STORE declara un tipo cursor (ANTES DEL CREATE ): *================== Type T_Cursor Is REF CURSOR;
*================== * En tu cuerpo colocas esto dentro del BEGIN: *================== OPEN T_Cursor FOR SELECT * FROM TABLAUSUARIO WHERE CODIGO = 'SSMH'
****Eso es todo, cualquier duda, mándame tu contenido de tu SP.
Saludos.
Samuel San Miguel Hernández
unread,
Jul 19, 2012, 3:14:12 PM7/19/12
Reply to author
Sign in to reply to author
Forward
Sign in to forward
Delete
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
*================== * Forma cadena TSQL * *================== TEXT TO lc_instruccionSQL TEXTMERGE NOSHOW
{Call procedure1(?'1',?'29')}
ENDTEXT
*================== * En la cabecera de tu STORE declara un tipo cursor (ANTES DEL CREATE ): *================== Type T_Cursor Is REF CURSOR;
*================== * En tu cuerpo colocas esto dentro del BEGIN: *================== OPEN T_Cursor FOR SELECT * FROM TABLAUSUARIO WHERE CODIGO = 'SSMH'
*================== * Para ejecutarlo *================== SQLEXEC(g_cnx,lc_instruccionSQL,'CurDevuelto')
****Eso es todo, cualquier duda, mándame tu contenido de tu SP.