Sql 为什么选择变量时会得到空值?
我想知道为什么选择变量时变量返回null我想知道在sql查询语句中写入变量的正确方法存储的语句正确运行,但当我使其执行时,它返回此错误消息Sql 为什么选择变量时会得到空值?,sql,Sql,我想知道为什么选择变量时变量返回null我想知道在sql查询语句中写入变量的正确方法存储的语句正确运行,但当我使其执行时,它返回此错误消息 子查询返回了多个值。这是不允许的,因为 子查询后面是=,!=,=或者当子查询用作 表情 如果您唯一的问题是为什么变量没有值,您可以尝试下面的TOP 1,从第一条记录中获取值 ALTER proc showdetails @quizid int as begin declare @result nvarchar(25) declare @f
子查询返回了多个值。这是不允许的,因为 子查询后面是=,!=,=或者当子查询用作 表情
如果您唯一的问题是为什么变量没有值,您可以尝试下面的TOP 1,从第一条记录中获取值
ALTER proc showdetails
@quizid int
as
begin
declare @result nvarchar(25)
declare @fail nvarchar(25)
declare @grade float
select distinct eq.Quiz_Title , s.NAME , eq.[Start_Date] , eq.End_Date , eqs.Std_Exam_Grad, @result as r , @fail as f from Exam_Quiz eq
inner join SUBJECTS s
on eq.SubjectId = s.SUB_CODE
inner join Exam_Quiz_Student eqs
on eqs.Quiz_ID = eq.Quiz_ID
where eq.Quiz_ID = @quizid
set @grade = (select distinct eqs.Std_Exam_Grad from Exam_Quiz_Student eqs where Quiz_ID = @quizid)
if(@grade >= 5)
begin
set @result = (select distinct COUNT(Std_NID) + ' ' + Std_Exam_Grad + ' ' + Quiz_ID as G from Exam_Quiz_Student
group by Std_Exam_Grad , Quiz_ID
having Std_Exam_Grad > 5 and Quiz_ID = @quizid)
--set @result = (select COUNT(Exam_Quiz_StudentID) as success from Exam_Quiz_Student)
--set @result = 'pass'
end
if(@grade < 5)
begin
set @fail = (select distinct COUNT(Std_NID) + ' ' + Std_Exam_Grad + ' ' + Quiz_ID as G from Exam_Quiz_Student
group by Std_Exam_Grad , Quiz_ID
having Std_Exam_Grad < 5 and Quiz_ID = @quizid
)
--set @fail = (select COUNT(Exam_Quiz_StudentID) from Exam_Quiz_Student)
--set @fail = 'fail'
end
end
但是,您必须检查这是否适合您试图实现的功能 select distinct通常不会为您提供一条记录。你到底想用这些变量做什么?我想选择它们以获得课堂上通过考试的学生,因此我想向他们展示请我想知道如何解决此错误:子查询返回的值超过1。当子查询在=、!=、=或者当子查询用作表达式时。如果子查询返回多行,则不能将其分配给单个变量。
SELECT TOP 1 @grade =eqs.Std_Exam_Grad from Exam_Quiz_Student eqs where Quiz_ID = @quizid