Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

devolver un valor desde un procedimiento almacenado de SQL server

465 views
Skip to first unread message

Sanchez Arnoletto Martin Rodrigo

unread,
Mar 15, 2003, 3:24:18 PM3/15/03
to
Tengo la instruccion:

SQLexec(1,"exec usp_pagos par1,par2,par3,par4")

y me deberia retornar 0 si no hubo inconvenientes, -1 si hubo algun error, y
un monto en caso de que haya vuelto. el procedimiento anda perfecto, solo
que no se como hacer para capturar el parametro de vuelta desde foxpro.
Alguna sugerencia?


Gracias desde ya


Gustavo

unread,
Mar 15, 2003, 6:12:02 PM3/15/03
to
Hola Martín te adjunto el siguiente código hecho en VB, no conozco FoxPro
pero si tiene VBA no será dificil ejecutarlos
Dim rs1 As adodb.Recordset
Dim cmd As adodb.Command
Dim param1 As Parameter
Dim param2 As Parameter
Dim id As Long
Dim X
CreaConexion 'establece conexión y configura cnnUnica
Set cmd = New adodb.Command 'habilitamos nuevo comando
Set cmd.ActiveConnection = cnnUnica
If rs1 Is Nothing Then
Set rs1 = New adodb.Recordset
End If
'colocando el nombre del trabajador
cmd.CommandText = "spNomTrabajador" 'indicamos el procedimiento a ejecutar
cmd.CommandType = adCmdStoredProc 'indicamos que es un sp
'cargando parametros
Set param1 = cmd.CreateParameter("Uno", adVarChar, adParamOutput, 52)
cmd.Parameters.Append param1
Set param2 = cmd.CreateParameter("Dos", adVarChar, adParamInput, 10, ci)
cmd.Parameters.Append param2
Set rs1 = cmd.Execute
!Trabajador = cmd(0) 'devolviendo parametro de salida

Saludos
Gustavo

"Sanchez Arnoletto Martin Rodrigo" <mrsarn...@dixisargentina.com.ar>
escribió en el mensaje news:OPxId#y6CHA...@TK2MSFTNGP10.phx.gbl...

Esparta Palma

unread,
Mar 17, 2003, 12:02:41 AM3/17/03
to
Si tu procedimiento almacenado retorna algo, revisa lo que hay en tu cursor.

IF SQLExec(lnConnHandle,[exec usp_pagos par1,par2,par3,par4],[result])>0
?EVAL([result]+"."+FIELD(1,[result])
ELSE
**** Revisar error
ENDIF

Una nota al margen, veo que pones un uno (1) en el parámetro del
manejador de conexión dentro de la función SQLExec(), creo no deberías
hacerlo así, sino mas bien usar una variable para eso.

--
Apoya a Microsoft Visual FoxPro usándolo legalmente
¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º
Espartaco Palma Martínez
SysOp PortalFox http://www.portalfox.com
email:mex...@portalfox.com

J. Crescencio Flores

unread,
Mar 17, 2003, 3:44:16 PM3/17/03
to
Creo que no hay manera de capturar el valor de retorno de un procedimiento
en SS por medio de SQLExec, sólo los valores de salida del procedimiento.
(OUTPUT)

Dos alternativas serían:
1) Ejecutar el sp con ADO, el cual si captura el valor de retorno. (ve el
ejemplo en la otra respuesta ejemplo en VB)
2) Agrega parámetros de salida al procedimiento y obtenerlos con SqlExec()
con la sintaxis:
y=SQLExec(x,"exec testproc ?@miVar")

Espero sea de ayuda,
Crescencio

"Sanchez Arnoletto Martin Rodrigo" <mrsarn...@dixisargentina.com.ar>

wrote in message news:OPxId#y6CHA...@TK2MSFTNGP10.phx.gbl...

J. Crescencio Flores

unread,
Mar 17, 2003, 3:47:24 PM3/17/03
to
Esparta,

Creo que los valores se regresan por medio de un RETURN _valor_ en el
procedimiento, los cuales no conozco manera de capturar por medio de
SqlExec(). Los mismos no se capturan en un cursor VFP en forma automática.

Saludos,
Crescencio

"Esparta Palma" <espartaQUITA...@softhome.net> wrote in message
news:OVQ6yV#6CHA...@TK2MSFTNGP10.phx.gbl...


> Si tu procedimiento almacenado retorna algo, revisa lo que hay en tu
cursor.
>
> IF SQLExec(lnConnHandle,[exec usp_pagos par1,par2,par3,par4],[result])>0

> ?EVAL([result]+FIELD(1,[result])


> ELSE
> **** Revisar error
> ENDIF
>
> Una nota al margen, veo que pones un uno (1) en el parámetro del
> manejador de conexión dentro de la función SQLExec(), creo no deberías
> hacerlo así, sino mas bien usar una variable para eso.
>
> --
> Apoya a Microsoft Visual FoxPro usándolo legalmente
> ¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º
> Espartaco Palma Martínez
> SysOp PortalFox http://www.portalfox.com
> email:mex...@portalfox.com
>
>

0 new messages