SQL Server 2008 R2存储过程

SQL Server 2008 R2存储过程,sql,stored-procedures,sql-server-2008-r2,Sql,Stored Procedures,Sql Server 2008 R2,我在SQL Server 2008 R2中遇到了改进缓慢的问题,下面是一个例子: 我想创建一个接受参数的存储过程,但我想让它以一种特殊的方式工作,这样,如果我在一个表格病人的搜索中传递了两个参数,例如,如果我传递给它一个参数,我希望它在表格学校中搜索,等等 任何帮助都将不胜感激 多谢各位 USE [] GO /****** Object: StoredProcedure [dbo].[proc_search_patient_ByID] Script Date: 11/28/2014

我在SQL Server 2008 R2中遇到了改进缓慢的问题,下面是一个例子:

我想创建一个接受参数的存储过程,但我想让它以一种特殊的方式工作,这样,如果我在一个表格病人的搜索中传递了两个参数,例如,如果我传递给它一个参数,我希望它在表格学校中搜索,等等

任何帮助都将不胜感激

多谢各位

USE []
GO
/****** Object:  StoredProcedure [dbo].[proc_search_patient_ByID]    Script Date: 11/28/2014     07:47:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[proc_search_patient_ByID]
( 
@PatID_pk int ,
@Cntid  smallint,
@FamID int
)
AS
SET NOCOUNT ON
select  cntid AS Center , PatFName AS FirstName   , PatMName AS MiddleName , PatLName AS LastName   , PatMother AS MotherName   ,PatDOB AS DOB
from tbl 
where Cntid=@Cntid  and PatId_PK = @PatID_pk 

如果我提供2个参数,我希望我的过程以这种方式工作,但如果我提供@FamID,我希望它在另一个表中完全搜索

尝试为未使用的参数传递null值,并在存储过程中检查null以切换表

CREATE PROCEDURE [dbo].[proc_search_patient_ByID]
( 
@PatID_pk int ,
@Cntid  smallint,
@FamID int
)
AS
SET NOCOUNT ON
IF @Cntid IS NULL
BEGIN
   --Use select stmt of a table
END
ELSE
   --Use select stmt of another table
BEGIN
END
同样,使用适当的参数切换表