Sea*_*dge 1 sql sql-server stored-procedures
我有以下存储过程:
ALTER PROCEDURE [dbo].[Provider]
(@strPro varchar(200))
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT *
FROM [db1].[dbo].[table1]
WHERE [Name] = @strPro
END
Run Code Online (Sandbox Code Playgroud)
我有一个下拉列表,其中包含以下条目:
All People
John D.
Mike K.
Alan H.
Paul Q.
Run Code Online (Sandbox Code Playgroud)
如何修改存储过程,这样,如果用户选择All People的WHERE声明将是一个LIKE,而不是一个=符号
例:
ALTER PROCEDURE [dbo].[Provider]
(@strPro varchar(200))
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT *
FROM [db1].[dbo].[table1]
if @strPro = 'All People'
BEGIN
WHERE [Name] LIKE '%'
END
ELSE
BEGIN
WHERE [Name] = @strPro
END
END
Run Code Online (Sandbox Code Playgroud)
像这样
SELECT * FROM [db1].[dbo].[table1]
WHERE @strPro = 'All People' OR [Name] = @strPro
Run Code Online (Sandbox Code Playgroud)
如果"All People"被传递 - 第一个条件将成立并且所有记录将被返回(您不需要这样做LIKE '%')否则只返回匹配[Name]的记录.