从同一存储过程中选择所有行或特定行

时间:2014-01-07 15:13:35

标签: sql sql-server-2008

我使用以下存储过程

CREATE PROCEDURE [dbo].[GetStates]
(
    @p_StateId int = NULL
)
AS
   SELECT 
      StateId AS CodeID,
      StateName AS CodeName
   FROM 
      States
   WHERE 
      StateID = COALESCE(@p_StateID, StateID)

如果@p_StateId为空,则返回所有行,否则如果StateId匹配,则返回单行。

我的问题是,用SQL Server 2008做一个更优雅的方法吗?

1 个答案:

答案 0 :(得分:5)

NULL的明确比较也应该有效:

SELECT StateId AS CodeID,
       StateName AS CodeName
FROM States
WHERE @p_StateID IS NULL OR StateID = @p_StateID