在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
答案 0 :(得分:2)
这是因为您的Mobile
不是整数,而是表中的VARCHAR
,因此当您与{{{}}进行比较时,sql server会尝试将Mobile
列转换为BIGINT
1 {} @Mobile
WHERE Mobile =@Mobile
上述方法有效,因为现在没有Mobile=cast(@Mobile as varchar)
列隐式转换为Mobile
。
修改强>
根据您更新的问题,一切都应该正常。请检查此SQL Fiddle
答案 1 :(得分:1)
我运行了您在本课题中提供的脚本,它在我的本地工作得非常好。
我猜你在传递参数时在代码中犯了错误,在传递参数时检查你的数据类型,这应该是给出错误的唯一可能性。