[freetds] SP parameters

ZIGLIO, Frediano, VF-IT Frediano.Ziglio at vodafone.com
Tue Jun 27 05:26:14 EDT 2006


> 
> Well, I'm using freetds 0.63 and I'm working with this record 
> per transaction:
> 
> struct str_saldo
> {
>      char sal_nro_tarjeta[MAX_STR];
>      char sal_nro_ani[MAX_STR];
>      int  sal_sp_estado;
>      char sal_saldofinal[MAX_STR];
>      int  sal_tipo_cliente;
>      char sal_sp_exec[MAX_STR];
> };
> And it's my dbrpcparam calls for 
> "Telviso_ValidaSaldoTarjetaAni" procedure that require 6 parameters.
> 
> if ( dbrpcparam(dbcon, "@devuelve", (BYTE)0, SYBINT4,  -1,  
> -1,  (BYTE *)op ) == FAIL) return FAIL;
> if (  dbrpcparam(dbcon, "@tarjeta",  (BYTE)0, SYBVARCHAR, 
> sizeof(rsaldo->sal_nro_tarjeta), 
> sizeof(rsaldo->sal_nro_tarjeta), (BYTE 
> *)&rsaldo->sal_nro_tarjeta) == FAIL)return FAIL;

This is quite wrong, maxlen should be 0 while datalen should be actual
length, something like

if (dbrpcparam(dbcon, "@tarjeta",  0, SYBVARCHAR, 0, 
               strlen(rsaldo->sal_nro_tarjeta), 
               (BYTE *)&rsaldo->sal_nro_tarjeta) == FAIL)
   return FAIL;

However I'm having some strange problems, current 0.63 returns

executing dbrpcinit
executing dbrpcsend
executing dbsqlok
rpc: dblib.c:1473: dbcolname: Assertion `resinfo' failed.
Aborted

freddy77




More information about the FreeTDS mailing list