我在写一个存储过程,它应该能够接受空值(tmpParameter)以及非空值(smallint)。我将如何组合逻辑,以便它可以在一个select语句中处理它们两个呢?具有NULL和非NULL值的SELECT语句
IF @tmpParameter IS NULL
SELECT [Key]
,[Parent_Key]
,[Parent_Code]
,[Code]
,[Desc]
,[Point]
,[By]
,[On]
FROM [db].[stats] t WHERE t.[Parent_Key] IS NULL
ELSE
SELECT [Key]
,[Parent_Key]
,[Parent_Code]
,[Code]
,[Desc]
,[Point]
,[By]
,[On]
FROM [db].[stats] t WHERE t.[Parent_Key]= @tmpParameter
有没有什么办法可以在一个声明中做到这一点?
能't。[Parent_Key]'永远是否定的吗? – Siyual
@SIYUAL nah,它是一个主键,由sql – Ramie
生成,因为它不会是负数,只需给参数一个默认值-1即可。那么你只需要一个查询,而你的where子句将在哪里t.Parent_Key = @ tmpParameter OR @ tmpParameter = -1 –