Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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 为什么选择变量时会得到空值?_Sql - Fatal编程技术网

Sql 为什么选择变量时会得到空值?

Sql 为什么选择变量时会得到空值?,sql,Sql,我想知道为什么选择变量时变量返回null我想知道在sql查询语句中写入变量的正确方法存储的语句正确运行,但当我使其执行时,它返回此错误消息 子查询返回了多个值。这是不允许的,因为 子查询后面是=,!=,=或者当子查询用作 表情 如果您唯一的问题是为什么变量没有值,您可以尝试下面的TOP 1,从第一条记录中获取值 ALTER proc showdetails @quizid int as begin declare @result nvarchar(25) declare @f

我想知道为什么选择变量时变量返回null我想知道在sql查询语句中写入变量的正确方法存储的语句正确运行,但当我使其执行时,它返回此错误消息


子查询返回了多个值。这是不允许的,因为 子查询后面是=,!=,=或者当子查询用作 表情


如果您唯一的问题是为什么变量没有值,您可以尝试下面的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