谁帮我看一下下面的存储过程是什么意思?
CREATE         PROCEDURE   获取客观题答题信息 
 @考试编号   varchar(50), 
 @年级名称   varchar(50), 
 @班级名称   varchar(50), 
 @学科   varchar(50), 
 @学籍状态编号   varchar(50) 
    AS 
 @SQL   VARCHAR(500) 
 SET   @SQL= 'select      学生编号   as   考号,学生姓名   as   姓名,学科名称   as   学科,年级名称   as   年级,班级名称   as   班级,客观题答题信息   from   考试成绩详细信息   where      考试编号= ' ' '   +   @考试编号   +    ' ' ' '   
 if   (@年级名称 <>  ' ') 
          set   @SQL=@SQL   +    '   and   年级名称= ' ' '   +   @年级名称   +    ' ' ' '   
 if   (@班级名称 <>  ' ') 
          set   @SQL=@SQL   +    '   and   班级名称= ' ' '   +   @班级名称   +    ' ' ' ' 
 DECLARE    
 if   (@学科 <>  ' ') 
          set   @SQL=@SQL   +    '   and   学科名称= ' ' '   +   @学科   +    ' ' ' '            
 if   (@学籍状态编号 <>  ' ') 
          set   @SQL=@SQL   +    '   and   学籍状态编号= ' ' '   +   @学籍状态编号   +    ' ' ' '          
 exec(@SQL) 
 GO 
 ------------------------------------- 
 不太会用存储过程,希望哪位说的详细一些,尤其是几个关键字(DECLARE,set,exec) 
 到时候在前台怎么用呢?有什么好处,谢谢了~~~
------解决方案--------------------说白了就是拼接了一个sql语句 
 DECLARE 定义变量 
 set 赋值 
 exec 执行
------解决方案--------------------Declare 定义一个变量   
 set 设置变量的值   
 exec 执行sql字符串语句
------解决方案--------------------根据传进来的参数来确定查询的语句,然后执行   
 这样写的好处是减少where语句的条件,提高执行的效率
------解决方案--------------------这是一个输入参数,拼接并执行SQL语句的存储过程   
 使用时 执行“exec 获取客观题答题信息  '1001 ', ' ', ' ', ' ', ' '” 
 ( '1001 ':考试编号是不能为空的参数。 ' ':可以为空的参数)
------解决方案--------------------根据不同的条件,来执行exec(@SQL)