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