我在sql server 2008中遇到此错误:将数据类型nvarchar转换为bigint时出错
嘿,我正在尝试使用此代码,但我不知道为什么会出现此错误:我在sql server 2008中遇到此错误:将数据类型nvarchar转换为bigint时出错,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,嘿,我正在尝试使用此代码,但我不知道为什么会出现此错误: Msg 8114, Level 16, State 5, Procedure stat_mob_user_spec, Line 23 Error converting data type nvarchar to bigint. 代码是: ALTER PROCEDURE [dbo].[stat_mob_user_spec] (@bt NVARCHAR(60) = NULL) AS DECLARE @ResultValue FLOA
Msg 8114, Level 16, State 5, Procedure stat_mob_user_spec, Line 23
Error converting data type nvarchar to bigint.
代码是:
ALTER PROCEDURE [dbo].[stat_mob_user_spec] (@bt NVARCHAR(60) = NULL)
AS
DECLARE @ResultValue FLOAT,
@test NVARCHAR(70)
BEGIN TRAN
SET @test = 'and blood_type = ' + @bt;
IF @bt = 'abc'
BEGIN
SET @test = '';
END
SELECT @ResultValue = COUNT(id_tips)
FROM tips,
blood
WHERE blood_id = id_blood + @test;
IF @ResultValue <> 0
BEGIN
ROLLBACK TRAN
END
ELSE
BEGIN
COMMIT TRAN
END
RETURN @ResultValue
ALTER PROCEDURE[dbo].[stat\u mob\u user\u spec](@bt NVARCHAR(60)=NULL)
像
声明@ResultValue FLOAT,
@测试NVARCHAR(70)
开始训练
设置@test='和blood_type='+@bt;
如果@bt='abc'
开始
设置@test='';
终止
选择@ResultValue=COUNT(id\U提示)
根据提示,
血
其中,血样id=id血样+@试验;
如果@ResultValue为0
开始
回滚传输
终止
其他的
开始
提交传输
终止
返回@ResultValue
如果我输入参数(abc),此代码正在工作。。。我没有得到结果。。但如果我尝试其他任何东西,我就会出错。。。有什么帮助吗
Im使用sql server 2008您的查询是:
SELECT @ResultValue = COUNT(id_tips)
from tips,blood
where blood_id = id_blood + @test ;
您正在将字符串值(@test
)添加到id\u blood
中。我认为这是一个bigint
,这是不允许的
看起来您可能正在考虑动态SQL。但这不是编写动态SQL的方式。我建议您与本地人讨论在SQL Server中编写存储过程的正确方法(或者至少阅读
select
语句中的文档)。另外,学习正确的连接语法。只需对from
子句中的逗号说“no”。您正试图将字符串@test
连接到where
子句。您需要了解如何使用动态SQLThat the word。。“动态sql”。。thx人!:我现在要做一些调查!顺便说一句,我是sql新手:如果你想一步一步地学习如何编写动态sql,我昨天刚刚回答了这个问题。。。虽然这是一个不同的场景,但请看我接受的答案,了解如何一步一步地编写: