• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 4103
  • Last Modified:

Stupid problem with BigInt converting!!!

SQL 2005.

Why is it doesnt work:

SELECT  CAST(1 AS bigint) AS a

gives an error:

"Cannot call methods on bigint."
0
vadim63
Asked:
vadim63
  • 14
  • 11
  • 5
  • +1
1 Solution
 
NightmanCTOCommented:
works for me - SQL 2000, SQL 2005 express, SQL 2005 64 bit
0
 
vadim63Author Commented:
No, SQL 2005 32.
0
 
SireesCommented:
Works for me too on SQL 2005 32
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
NightmanCTOCommented:
Like I said, 2005 express (32) and 64 bit Enterprise
0
 
NightmanCTOCommented:
perhaps you want to post more code - or is that the statement that is failing!?
0
 
vadim63Author Commented:
Ok, If I start it in a new query window, it works fine, but if I run it like

SELECT  CAST(1 AS bigint) AS a
from mytable

it gives an error.

BTW,

SELECT  CAST(1 AS int) AS a
from mytable

works fine also. The problem with bigint only.
0
 
vadim63Author Commented:
There's no more code. There's the only statement.
0
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
I presume that your database is in a compatibility mode of 70 or lower... when bigints were not available...
0
 
NightmanCTOCommented:
That should also work.
0
 
vadim63Author Commented:
It was started on SQL 2000. But now (I checked it) the compatibility level is SQL 2005 (90)
0
 
NightmanCTOCommented:
works on compatibility mode of 70
0
 
NightmanCTOCommented:
Is that the entire error message, or is there more?
0
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
can you post the table structure, please?
0
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
>works on compatibility mode of 70
I confirm that it works in 70... was just an idea...
0
 
NightmanCTOCommented:
Good idea - I hadn't thought of it, and had to test it
0
 
NightmanCTOCommented:
did it in 2K as well, just to be sure ;)
0
 
vadim63Author Commented:
The entire message is:

SQL Execution Error.
Executed SQL statement: SELECT CAST (1 AS bigint).ToString() AS a FROM aaa
Error Source: .Net SqlClient Data Provider
Error Message: Cannot call methods on bigint.

The table structure:

ID                smallint
PhoneTXT    varchar(15)
phonedig      bigint
Tex              varchar(MAX)
0
 
NightmanCTOCommented:
Where are you executing this statement from? Not Query analyser
0
 
NightmanCTOCommented:
Are you using the View Designer in Management Studio? This fails there. Appears to be a bug in the Net SqlClient Data Provider.

I recommend that you create the view from T-SQL using Query Analyser.
0
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
What is that ToString?
in TSQL you don't need that...

SELECT CAST (1 AS bigint).ToString() AS a FROM aaa
SELECT CAST( CAST (1 AS bigint) as varchar(20)) AS a FROM aaa
0
 
vadim63Author Commented:
I did not type "ToString()". What I did is: "SELECT CAST (1 AS bigint) AS a FROM aaa"

And "ToString()" shows up in error message only. That's why I called this problem - stupid.
0
 
NightmanCTOCommented:
ToString() is automatically inserted in the View Designer in Management Studio - googled a little and found another similar post (http://www.dbtalk.net/microsoft-public-sqlserver-programming/sql-execution-error-cannot-call-217064.html).

Tried it and got the same error.
0
 
vadim63Author Commented:
What a hell?

SELECT     CAST(CAST(1 AS bigint) AS varchar(20)) AS a FROM  aaa  - works
but
SELECT     CAST(1 AS bigint) AS a FROM   aaa  - not
0
 
NightmanCTOCommented:
Also suggests you will get the same error in a Visual Studio 2005 Database project.

So stupid error is correct - looks like a bug in VS or the .Net SqlClient Data Provider (not sure which).

As I said, use T-SQL to create the view instead.
0
 
vadim63Author Commented:
SELECT     CAST(1 AS int) AS a FROM   aaa   works also
0
 
NightmanCTOCommented:
Yes - I thought that you wanted bigint though? (although for a value off 1 you could also use tinyint).
0
 
vadim63Author Commented:
I need a bigint. And value "1" is for testing only.
0
 
vadim63Author Commented:
Ok, I guess, there's no solution for it. How should assign the points? Split it?
0
 
NightmanCTOCommented:
There is a solution - use T-SQL to create the view, not the designer. You can still select from the view if it is created this way, can't you?
0
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
how do you run this query exactly?
0
 
vadim63Author Commented:
Yes, you right, it doesn't work in designer only. T-SQL does the thing.
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

  • 14
  • 11
  • 5
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now