Skip to Content.
Sympa Menu

freetds - [freetds] FreeTDS problems with converting SQL BigInt

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Feroze Daud <khichdo AT yahoo.com>
  • To: "freetds AT lists.ibiblio.org" <freetds AT lists.ibiblio.org>
  • Subject: [freetds] FreeTDS problems with converting SQL BigInt
  • Date: Sun, 15 Sep 2013 08:58:28 -0700 (PDT)

I have a program on Unix that is querying a MSSQL Database. The DB exposes
functionality as a Stored procedure, with a BigINT output parameter.
On the client side, we have a C++ program that is calling that sproc and
trying to get the bigint from the output parameter.
What we are seeing is that the data is getting corrupted. In other words,
garbage value for the BigInt is being returned from the driver.
More Information:
Client:
Ubuntu 11.10 with freetds 0.64 TDS Version: 0.8 Custom C++ program linked
with freetds 0.64
Server:
MSSQL 2008 Stored Procedure that returns a BigInt as an output parameter.
NOTE:
We tried changing the sproc to return the BigInt as the first resultset. If
we try to read it as a BigInt, we get the garbage value. However, if we try
to read it as a string, it comes across correctly.
I enabled freetds logging for the driver, and I see that the driver is
thinking that the value is a NUMERIC, not a BigInt....
token.c:526:processing result tokens. marker is ac(PARAM)
>token.c:1526:processing result. type = 108(numeric), varint_size 1
>token.c:1547:processing result. column_size 17
>token.c:1863:tds_get_data: column 0, type 108, varint size 1
However, the SQL server SP definition correctly defines the output parameter
as a BigInt...
ALTERPROCEDURE[dbo].[SomeSproc](@pParam1 bigint,@pReturnCnt int
=5000,-- how many records to return@pOutParam1 bigint =NULLOUTPUT )AS
Any idea why this is happening?
Thanks,
feroze.




Archive powered by MHonArc 2.6.24.

Top of Page