2015-06-19 36 views
-1

在Sql服務器我不能聲明一個變量與bigint數據類型。我的移動列有bigint數據類型。它給我錯誤varchar不轉換爲bigint當我使用程序。我不能聲明bigint變量

當我寫Mobile=cast(@Mobile as varchar)它工作正常

ALTER PROCEDURE [dbo].[Get_Suggestion] 
     @FirstName varchar(255), 
     @MiddleName varchar(255), 
     @LastName varchar(255), 
     @Mobile Bigint 

AS 
BEGIN 
SELECT 
    * 
    FROM dbo.Contacts 
    WHERE 
    (
     Mobile [email protected] 
    ) 
END 

表結構

DROP TABLE [dbo].[Contacts] 
GO 
CREATE TABLE [dbo].[Contacts] (
[ContactId] int NOT NULL IDENTITY(1,1) , 
[Name] varchar(100) NOT NULL , 
[FamilyHeadId] int NULL , 
[Addressold] ntext NULL , 
[Mobile] bigint NULL , 

調用

Get_Suggestion 'John','Doe','Patel',999999999 
+2

檢查您的手機列數據類型 –

+0

數據類型是bigint –

+1

您確定。再次檢查你的表DDL – ughai

回答

2

這是因爲你的Mobile不是整數,但在你的表,因此SQL Server試圖Mobile列轉換爲BIGINT當您在WHERE Mobile [email protected]

Mobile=cast(@Mobile as varchar) 

上述工程與@Mobile比較,因爲現在有Mobile列的隱式轉換一個VARCHARbigint

編輯

根據您的更新問題,一切都應該正常工作。檢查這SQL Fiddle

+0

移動列數據類型爲BIGINT –

+1

確定嗎?你可以發佈你的表格結構嗎? – ughai

+0

我已經添加了我的結構。 –

1

我跑你在這個問題提供的腳本,它在我的本地工作得很好。

我想你在傳遞參數的時候在代碼中犯了錯誤,在傳遞參數時檢查你的數據類型,這應該是提供錯誤的唯一可能性。