存储过程的参数传递

时间:2015-03-31 04:22:32

标签: sql sql-server stored-procedures

我需要帮助使用存储过程获取记录,我需要从存储过程传递一个参数,但我需要获取两个学期记录

Declare @sem varchar(10)

set @sem ='1sem'

Ex:从学生中选择*,其中TestType ='1sem'

set @sem ='2sem'
select * from student where TestType = '2sem'

set @sem ='dual'

如果我需要选择1st sem和2 sem,我只有一个参数,但是如何使用存储过程处理它。

Select * 
from student 
where TestType where?

我如何实现

select * 
from student 
where TestType = '1sem' or TestType = '2sem'

3 个答案:

答案 0 :(得分:0)

您可以尝试将testtype值与“,”(逗号)

分开

然后改变你的sql:

set @sem = '1sem, 2sem'
set @sql = 'select * from student where testype in ('+@sem+')'
execute sp_executesql @sql

答案 1 :(得分:0)

你可以使用这样的东西

DECLARE @sem VARCHAR(10) = '1sem';
select * from student where testype = @sem OR (@sem = 'dual' AND testype IN '1sem','2sem');

答案 2 :(得分:0)

您必须将@sem声明为表并插入记录

DECLARE @sem TABLE
(
    Testype VARCHAR(50),
)

INSERT INTO @sem
select Testype from student where TestType = '1sem' or TestType = '2sem'