如何在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)