Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我在sql server 2008中遇到此错误:将数据类型nvarchar转换为bigint时出错_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

我在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,我昨天刚刚回答了这个问题。。。虽然这是一个不同的场景,但请看我接受的答案,了解如何一步一步地编写: