Ejecutar Stored procedure de SQl server

Ejecutar Stored procedure de SQl server

Postby mariordz » Mon Aug 13, 2018 10:22 pm

Buenas tardes compañeros, después de dar vueltas en el foro sin encontrar la respuesta les pido su ayuda, necesito ejecutar un stored procedure desde SQL, generé y ejecuté el stored procedure exitosamente desde el SQL, pero no le doy al clavo de como ejecutarlo desde Fivewin (al stored procedure le paso somo para metro dos fechas y debe darme como resutado un recordset).

Les explico, normalmente siempre hago mis consultas directamente en SQL, una vez que he comprobado que el query me da los resultados que necesito lo inserto a mi programa en Fivewin, así lo hice en este caso y tras comprobar que mis datos eran correctos lo agregué a mi "PRG", lo curioso del caso es que cuando presenté el desarrollo a mis usuarios me daba error al generar el recordset, por alguna causa que no he podido determinar si ejecuto el query desde fivewin me marca error, pero si lo ejecuto primero desde SQL (SQL Server Managment Studio) ahi si funciona correctamente y a partir de esa ejecución ya empieza a funcionar dentro de la aplicación también (Si, lo sé, suena a mentira, pero por alguna causa así pasa).

Para ejecutar el SP desde SQL uso este código:
Code: Select all  Expand view  RUN
USE [MiBase]
GO
DECLARE @return_value int EXEC  @return_value = [dbo].[Mi_StoredProdcedure] @FECHAI = '01/01/2018',   @FECHAF = '13/08/2018'
GO


Que sintaxis debería usar para que funcionara también desde Fivewin?

Así ejecuto normalmente mis consultas desde Fivewin:

Code: Select all  Expand view  RUN
cSql1:="select campo1,campoi2,campo3 from tabla where campo1='Valor' order by campo2"

oRs1 := TOleAuto():New( "ADODB.Recordset" )
oRs1:CursorType := 1 // opendkeyset
   
oRs1:CursorLocation := 3 // local cache
oRs1:LockType := 3 // lockoportunistic

TRY
    oRS1:Open( cSql1,'Provider='+xPROVIDER+';Data Source='+xSOURCE+';Initial Catalog='+xCATALOG+';User Id='+xUSERID+';Password='+xPASSWORD )

CATCH oErr
  MsgInfo( "Error al generar el recordset" )
  RETURN(.F.)
END TRY

oRs1nr:=oRs1:RecordCount()
 
oRs1:MoveFirst()



Uso Fivewin 16.04
Harbour
BCC7
User avatar
mariordz
 
Posts: 131
Joined: Tue Dec 26, 2006 4:50 pm
Location: Ciudad de México

Re: Ejecutar Stored procedure de SQl server

Postby armando.lagunas » Mon Aug 13, 2018 11:18 pm

hola:

yo ocupo Odbc para realizar lo que solicitas, no uso ADO, pero si necesitas un ejemplo de como yo lo utilizo, te doy unos tips.

pero se me ocurre que tiene que ser algo asi:

Code: Select all  Expand view  RUN


oRs1:Execute("EXECUTE Nombre_de_la_stored_procedure, '01/01/2018', '13/08/2018' ")

 


el comando "Execute" es el que te llama la stored procedure y depende de como la construyas es el resultado obtenido.
el comando "Call es su respectiva equivalencia en MySql.

espero de que te pueda ayudar un poco.

Saludos.
SkyPe: armando.lagunas@hotmail.com
Mail: armando.lagunas@gmail.com
User avatar
armando.lagunas
 
Posts: 346
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile

Re: Ejecutar Stored procedure de SQl server

Postby mariordz » Tue Aug 14, 2018 3:14 pm

Armando, muchas gracias por tu respuesta, si me puedes mandar un ejemplo de como lo haces con ODBC te lo agradecería mucho.
User avatar
mariordz
 
Posts: 131
Joined: Tue Dec 26, 2006 4:50 pm
Location: Ciudad de México

Re: Ejecutar Stored procedure de SQl server (RESUELTO)

Postby mariordz » Wed Aug 15, 2018 1:36 pm

Buenos días, yendo contra todo lo que he leido en el foro y despues de no haber obtenido una respuesta clara me puse a intentar diferentes opciones y a pesar de que en varias fuentes leí que los stored procedures no se "llaman" con el comando "Select" de SQL, intente este opción y si funciona:

Code: Select all  Expand view  RUN

fPer:=date()
cFeini:="01/01/"+alltrim(str(year(fPer)))
cFefin:=dtoc(fPer)

cCadsql1:="EXEC [dbo].[MyStoredProcedure] @FECHAI = '&cFeini',  @FECHAF = '&cFefin' "
   
    oRs1 := TOleAuto():New( "ADODB.Recordset" )
    oRs1:CursorType := 1 // opendkeyset
    oRs1:CursorLocation := 3 // local cache
    oRs1:LockType := 3 // lockoportunistic

    TRY
        cursorwait()
        oRs1:Open( cCadSql1,'Provider='+xPROVIDER+';Data Source='+xSOURCE+';Initial Catalog='+xCATALOG+';User Id='+xUSERID+';Password='+xPASSWORD )

        CATCH oErr
            MsgInfo( "Error al generar el recordset de ventas por vendedor" )
        RETURN(.F.)
   END TRY
 


Espero que el tip les sea util a alguno de ustedes.
User avatar
mariordz
 
Posts: 131
Joined: Tue Dec 26, 2006 4:50 pm
Location: Ciudad de México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 107 guests