Page 1 of 1

Stored Procs + Tdolphin

Posted: Thu Jan 02, 2025 1:43 pm
by jbrita
Buenos dias,, necesito un ejemplo del manejo stored procs con tdolphin.
saludos

Re: Stored Procs + Tdolphin

Posted: Thu Jan 02, 2025 3:16 pm
by Antonio Linares
https://tdolphin.blogspot.com/
Procedimientos Almacenados / stored Procedures
Creamos el procedimiento almacenado desde el cliente mysql de nuestra preferencia


DELIMITER $
DROP PROCEDURE IF EXISTS born_in_year;
CREATE PROCEDURE born_in_year( year_of_birth INT )
BEGIN
SELECT first_name, last_name, birth, death from president where year( birth ) = year_of_birth;
END $
DELIMITER ;

para ejecutarlo simplemento lo hacenmos pro medio de un query


cText = "CALL born_in_year( 1908 )"
oQry := oServer:Query( cText )

el siguiente llamdo es importante para "terminar" el proceso
oServer:NextResult()

veammos el ejemplo completo


#include "tdolphin.ch"

#define CRLF Chr( 13 ) + Chr( 10 )

PROCEDURE Main()

LOCAL cText := ""
LOCAL oQry, oServer

SET CENTURY ON
SET DATE FORMAT "dd/mm/yyyy"

D_SetCaseSensitive( .T. )

IF ( oServer := ConnectTo() ) == NIL
RETURN NIL
ENDIF
cls

cText = "CALL born_in_year( 1908 )"

oQry := oServer:Query( cText )

DolphinBrw( oQry, "Test" )

oServer:NextResult()

oQry:End()

cText = "CALL born_in_year( 1913 )"

oQry := oServer:Query( cText )

DolphinBrw( oQry, "Test" )

oServer:NextResult()

oQry:End()

cText = "call count_born_in_year( 1913, @count )"

oQry := oServer:Execute( cText )

oServer:NextResult()

oQry := oServer:Query( "select @count as count" )

? "count is:"
?? oQry:count

oQry:End()



RETURN









esto verifica que no exista otro query con resultado (por motivos de posibles multiples sentencias en los precedimeintos) y cierra el ciclo de existir otro query con resultado deberiamos hacer lo siguiente

oQry:LoadNextQuery( )

asi cargamnos automaticamente el proximo resultado de un query para multi sentencias

ejemplo de multiples sentencias


#include "tdolphin.ch"


FUNCTION Main()

LOCAL oServer, oQry

D_SetCaseSensitive( .T. )
Set_MyLang( "esp" )

IF ( oServer := ConnectTo() ) == NIL
RETURN NIL
ENDIF

oQry = oServer:Query( "select * from president; select * from student" )

DolphinBrw( oQry, "President" )

oQry:LoadNextQuery( )

DolphinBrw( oQry, "Student" )

oQry = NIL

oServer:End()

RETURN NIL


#include "connto.prg"
#include "brw.prg"





Re: Stored Procs + Tdolphin

Posted: Fri Jan 03, 2025 12:01 pm
by jbrita
Muchas Gracias Antonio
Saludos