Can you run the statement directly in SQL Server?
It looks to be more of a DB issue (SQL Server) than DBI, but that's not 100% certain.
P.S. please use some formatting in your post - thanks!
Update:
Post formatted :)
I see that you already checked w/ analyzer (I missed that) -
but a quick search turned up this - which mentions the use of SQL_INTEGER vs. SQL_VARCHAR hints... might apply to your situation?
In other words - try without using placeholders - if that ends up working, the DBD might be trying to bind to the wrong SQL type (integer or varchar)
Update II:
Wow, this is getting messy... as
gellyfish mentions, SQL-42000 is a general-purpose error message. However, I still would try it without the bind params in the SQL.
--------------
"But what of all those sweet words you spoke in private?"
"Oh that's just what we call pillow talk, baby, that's all."