如何在SQLServer中编写存储过程

如何在SQLServer中编写存储过程,sql,sql-server-2008,Sql,Sql Server 2008,我有这样的桌子: CREATE TABLE [dbo].[tblSingleQuery] ( Id Int IDENTITY(1,1), ProdId INT, ColorId INT, IsFront BIT DEFAULT 0 ) CREATE PROCEDURE [dbo].[proc_GetProductColorImage] @ColorId INT AS BEGIN IF @ColorId = 0 BEGIN SEL

我有这样的桌子:

CREATE TABLE [dbo].[tblSingleQuery]
(
    Id Int IDENTITY(1,1),
    ProdId INT,
    ColorId INT,
    IsFront BIT DEFAULT 0
)
CREATE PROCEDURE [dbo].[proc_GetProductColorImage]
    @ColorId INT
AS
BEGIN
   IF @ColorId = 0
   BEGIN
       SELECT * 
       FROM [tblSingleQuery] 
       WHERE IsFront <> 1
   END
   ELSE
   BEGIN
       SELECT * 
       FROM [tblSingleQuery] 
       WHERE ColorId <> @ColorId 
   END
END

我想用输入参数
@ColorId
创建一个存储过程,它将使用
where
子句
ColorId@ColorId
获取结果。但是当我通过
@ColorId=0
时,它应该排除具有
IsFront=1
的记录

目前,我创建了如下存储过程:

CREATE TABLE [dbo].[tblSingleQuery]
(
    Id Int IDENTITY(1,1),
    ProdId INT,
    ColorId INT,
    IsFront BIT DEFAULT 0
)
CREATE PROCEDURE [dbo].[proc_GetProductColorImage]
    @ColorId INT
AS
BEGIN
   IF @ColorId = 0
   BEGIN
       SELECT * 
       FROM [tblSingleQuery] 
       WHERE IsFront <> 1
   END
   ELSE
   BEGIN
       SELECT * 
       FROM [tblSingleQuery] 
       WHERE ColorId <> @ColorId 
   END
END
创建过程[dbo]。[proc\u GetProductColorImage]
@彩色整数
作为
开始
如果@ColorId=0
开始
选择*
来自[tblSingleQuery]
前门1在哪里
结束
其他的
开始
选择*
来自[tblSingleQuery]
其中ColorId@ColorId
结束
结束
如何在单个select查询中进行管理?

您可以尝试以下方法:

SELECT * 
FROM [tblSingleQuery] 
WHERE
    (@ColorId = 0 AND IsFront <> 1 ) OR 
    (@ColorId != 0 AND ColorId <> @ColorId )
选择*
来自[tblSingleQuery]
哪里
(@ColorId=0和IsFront 1)或
(@ColorId!=0和ColorId@ColorId)