存储过程返回选定的值

时间:2017-02-20 07:01:47

标签: sql-server stored-procedures

我在数据库中有两个表。一个是Group表,另一个是Status表。两者都有GroupId常见。所以我会内心加入他们我会得到所有的记录。状态表在表中有状态列,该状态列有6个值,如

1)  active
2)  not active
3)  pending
4)  approved
5)  placed
6)  unplaced

现在所有记录都有一个与状态列相关的列。

我需要一个存储过程来获取记录,如果它是活动的,我们将获得内部连接两个表的记录,如果它被放置状态,我们将获得放置的列记录等等,如果用户没有选择任何我们将获得所有记录。我将绑定到下拉列表,这些值将显示在前端的gridview中。

这是我的代码:

create procedure Sp_SelectedStatus 
@Status varchar(20) as 
Begin 
if(@Status = 'Active') 
    Begin 
    Select A.GroupName , B.Brand , B.Model , 
           B.SerialNo , B.Status , B.AddedOn 
    from GroupDetails as A 
    inner join DeviceDetails as B 
    on A.GroupId = B.GroupId 
    where Status = 'Active' 
    End
End

1 个答案:

答案 0 :(得分:0)

根据提供的信息,这可能是一个可能的存储过程。 "如果用户没有选择任何内容,我们将获得所有记录" - 将@Status变量默认为null,这使它成为可选项,然后查询将返回所有记录。

create procedure dbo.usp_GetStatus 
    @Status varchar(20) = null 
AS 

SET NOCOUNT ON;

Select G.GroupName, D.Brand, D.Model, D.SerialNo, D.[Status], D.AddedOn 
from GroupDetails as G inner join 
    DeviceDetails as D on G.GroupId = D.GroupId 
where D.Status = IsNull(@Status, D.Status);