我不能声明bigint变量

时间:2015-06-19 05:20:19

标签: sql-server

在Sql server中,我无法使用 bigint 数据类型声明变量。我的移动列包含 bigint 数据类型。当我使用程序时,它给我错误 varchar 没有转换为 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 =@Mobile 
     )
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 :(得分:2)

这是因为您的Mobile不是整数,而是表中的VARCHAR,因此当您与{{{}}进行比较时,sql server会尝试将Mobile列转换为BIGINT 1 {} @Mobile

WHERE Mobile =@Mobile

上述方法有效,因为现在没有Mobile=cast(@Mobile as varchar) 列隐式转换为Mobile

修改

根据您更新的问题,一切都应该正常。请检查此SQL Fiddle

答案 1 :(得分:1)

我运行了您在本课题中提供的脚本,它在我的本地工作得非常好。

我猜你在传递参数时在代码中犯了错误,在传递参数时检查你的数据类型,这应该是给出错误的唯一可能性。