读书人

哪位高手帮小弟我看一下下面的存储过程

发布时间: 2012-01-29 21:39:32 作者: rapoo

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

读书人网 >C#

热点推荐