[freetds] SP parameters

Gustavo A. Gonzalez ggonzalez at telviso.com.ar
Mon Jun 26 16:38:29 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;
if (  dbrpcparam(dbcon, "@ani",   (BYTE)0, SYBVARCHAR, sizeof(rsaldo->sal_nro_ani), sizeof(rsaldo->sal_nro_ani), (BYTE *)&rsaldo->sal_nro_ani) == FAIL)return FAIL;
  
  //Stored Procedure RETURN VALUES
if (dbrpcparam(dbcon, "@estado", (BYTE)DBRPCRETURN, SYBINT4, -1, -1, (BYTE *)&rsaldo->sal_sp_estado) == FAIL)return FAIL;
if (dbrpcparam(dbcon, "@saldo", (BYTE)DBRPCRETURN, SYBMONEY, -1, -1, (BYTE *)saldo) == FAIL) return FAIL;
if (dbrpcparam(dbcon, "@cliente", (BYTE)DBRPCRETURN, SYBINT4, -1,-1, (BYTE *)&rsaldo->sal_tipo_cliente) == FAIL)return FAIL;}
 
I call that from a procedure this way:

loadparam_ex(rsaldo, dbconn, &op, &saldo);

where 'rsaldo' is a struct str_saldo structure, 'dbconn' my connection pointer, 'op' is an integer and 'saldo' is a DBMONEY variable.

It works fine on a fedora core 3 distro, kernel 2.6.9 with freetds 0.62.4 but wont work on a DEBIAN Distro, kernel 2.6.12.4 with freetds 0.63.  Thanks !


G.


More information about the FreeTDS mailing list