日期:2014-05-19  浏览次数:20940 次

谁帮我看一下下面的存储过程是什么意思?
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)