[freetds] SQLBindParameter incorrectly binds as varchar

Brad Midgley bmidgley at xmission.com
Fri Aug 27 11:01:15 EDT 2004


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.

> 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

-- 
Brad



More information about the FreeTDS mailing list