Sql server SQL Server-必须声明标量变量

Sql server SQL Server-必须声明标量变量,sql-server,tsql,Sql Server,Tsql,我试图声明这些值并使用执行它们来获取表中某个属性的特定值。但是,每次我试图设置@test和@columnpiriod时,它都会给我一个错误:必须声明标量变量“@test”或必须声明标量变量“@columnpiriod” 不能将字符串和整数组合在一起 试一试 这也会限制您的选择,以确保它是标量的您不能将字符串和整数组合在一起 DECLARE @columnPeriod INT, @test varchar(4); SET @test = '2015'; SET @columnPeriod = SE

我试图声明这些值并使用执行它们来获取表中某个属性的特定值。但是,每次我试图设置@test和@columnpiriod时,它都会给我一个错误:必须声明标量变量“@test”或必须声明标量变量“@columnpiriod”


不能将字符串和整数组合在一起

试一试


这也会限制您的选择,以确保它是标量的

您不能将字符串和整数组合在一起

DECLARE @columnPeriod INT, @test varchar(4);
SET @test = '2015';
SET @columnPeriod = SELECT distinct Period FROM Courses WHERE year = ' + @test + '';
试一试

这也会限制您的选择,以确保它是标量的

DECLARE @columnPeriod INT, @test varchar(4);
SET @test = '2015';
SET @columnPeriod = SELECT distinct Period FROM Courses WHERE year = ' + @test + '';
假设如下:

  • 期间只有一个2015年的记录如果您有多个但都是相同的“期间”,则可能需要不同的记录。如果有多行,则无法执行此操作,因为返回的记录集有多行
  • Year是一个varchar数据类型
假设如下:

  • 期间只有一个2015年的记录如果您有多个但都是相同的“期间”,则可能需要不同的记录。如果有多行,则无法执行此操作,因为返回的记录集有多行
  • Year是一个varchar数据类型

为什么在存储字符串时columnPeriod是int?将@columnPeriod更改为varchar或nvarchar。感谢您的提及。只是一个拼写错误@JonHif你运行
从课程中选择句点,其中年份='2015'返回的记录是否超过1条?那么
从年份为'2015'的课程中选择不同的期间如何我无法重现您的错误。当我运行您问题中的代码时,当将varchar值“SELECT Period FROM Courses WHERE year=”转换为数据类型int时,
转换失败。
,这是因为您试图使用int类型变量
test
进行字符串连接。如果您不发布产生错误的实际代码,人们很难帮助您。为什么在存储字符串时columnPeriod是int?将@columnPeriod更改为varchar或nvarchar。感谢您的提及。只是一个拼写错误@JonHif你运行
从课程中选择句点,其中年份='2015'返回的记录是否超过1条?那么
从年份为'2015'的课程中选择不同的期间如何我无法重现您的错误。当我运行您问题中的代码时,当将varchar值“SELECT Period FROM Courses WHERE year=”转换为数据类型int时,
转换失败。
,这是因为您试图使用int类型变量
test
进行字符串连接。如果您不发布产生错误的实际代码,人们很难帮助您。我知道我将INT作为variabel类型编写,但这是一个错误。我把它命名为VARCHAR(MAX)。然而,即使我尝试运行
SET@test=2015它给了我一个错误。如果两者都是varchar,请更改原始帖子。我知道我将INT作为variabel类型编写,但这是一个错误。我把它命名为VARCHAR(MAX)。然而,即使我尝试运行
SET@test=2015它告诉我错误。如果两者都是varchar,请更改原始帖子。
DECLARE @columnPeriod INT, @test varchar(4);
SET @test = '2015';
SET @columnPeriod = SELECT distinct Period FROM Courses WHERE year = ' + @test + '';