create procedure GetStudentID
(
  @studentName varchar(8),
  @studentNumber varchar(8)
)
asdeclare @result intselect @result=studentID 
from gss_student
where sutdentName=@studentName and studentNumber=@studentNumberif @result is null
 RAISERROR ('不存在此学生ID',16,1)前台C#程序调用
try
{
  调用存储过程代码
}
catch(expiton)
{
  Console.WriteLine("不存在此学生!")
}
当指定参数为一个不存在的studentName 或者不存在的studentNumber 时,提示"不存在此学生!";如果指定一个存在的学生名字和学生编号时,还是提示"不存在此学生!".
如何更改?

解决方案 »

  1.   

    这个需求都用 RAISERROR ?
      

  2.   

    代码逻辑并没有错,不过你同时,指定 sutdentName=@studentName and studentNumber=@studentNumber 有必要迈?studentNumber 是撒子东西? 学号? 不是可以唯一标识了迈?也许就是这个导致了没有查到数据这种功能,不要去用 RAISERROR 耗性能,直接返回一个 0/1 或者返回 studentid 都可以
      

  3.   

    create procedure GetStudentID
    (
      @studentName varchar(8),
      @studentNumber varchar(8)
    )
    asdeclare @result intselect @result=studentID 
    from gss_student
    where sutdentName=@studentName and studentNumber=@studentNumberif @result is null
      set @result=0return @result