[freetds] SQLBindParameter incorrectly binds as varchar

Frediano Ziglio freddyz77 at tin.it
Mon Aug 30 10:46:09 EDT 2004


Il ven, 2004-08-27 alle 17:01, Brad Midgley ha scritto:
> Is SQLBindParameter being misused here by openldap?
> 
> oc_id is an unsigned long and the call is made like:
> 
> SQLBindParameter( sth, (SQLUSMALLINT)(1),		
> 		SQL_PARAM_INPUT, SQL_C_ULONG, SQL_INTEGER,	
> 		0, 0, (SQLPOINTER)(&oc_id), 0,(SQLINTEGER*)NULL )
> 
> But rather than being bound as an integer, it's bound as a varchar and 
> chokes when the query is executed.
> 

Perhaps openldap bound again this parameter later ?? Can you post
unixODBC log ??

> > backsql_oc_get_attr_mapping(): error executing at_query
> >     "SELECT
> > name,sel_expr,from_tbls,join_where,add_proc,delete_proc,param_order,expect_return,sel_expr_u 
> > 
> > FROM ldap_attr_mappings WHERE oc_map_id=?"
> >     for objectClass "inetOrgPerson"
> >     with param oc_id="1"
> > Return code: -1
> >    Native error code: 257
> >    SQL engine state:  37000
> >    Message:           [unixODBC][FreeTDS][SQL Server]Implicit
> > conversion from datatype 'VARCHAR' to 'NUMERIC' is not allowed.  Use the
> > CONVERT function to run this query.
> 
> I'm using freetds 0.62.4 (to sybase 12.0) and openldap-2.2.15. Also 
> running redhat packages: unixODBC-2.2.8-2.3.0.2, 
> unixODBC-devel-2.2.8-2.3.0.2

It seems that some Sybase prepare stuff require SQLDescribeParam and
related (still not supported).

freddy77





More information about the FreeTDS mailing list