【发布时间】:2014-03-31 02:15:50
【问题描述】:
我的存储过程有一些问题。它要求我以三种不同的方式搜索患者,PatientID、LastName 和 MedicareNum。出于某种原因,我可以通过MedicareNum 进行搜索,但无法使用其他两个进行搜索。
到目前为止,这是我的代码:
ALTER PROCEDURE SearchByMedi
(
@MedicareNum nchar (10),
@LastName varchar(50),
@PatientID nchar(10)
)
as
Begin
SELECT * from Patient
WHERE MedicareNum = @MedicareNum OR @MedicareNum IS NULL
AND LastName = @LastName OR @LastName IS NULL
AND PatientID = @PatientID OR @PatientID IS NULL
End
提前感谢您的任何反馈,非常感谢!
编辑:很抱歉花了这么长时间来发布我到目前为止所做的事情。我努力了: 改变程序 SearchByMedi @MedicareNum nchar (10), @LastName varchar(50), @PatientID nchar(10) 作为 开始 设置无计数;
DECLARE @Sql NVARCHAR(MAX);
SET @Sql = N'SELECT * from Patient WHERE 1 = 1 '
+ CASE WHEN @MedicareNum=''
THEN N' AND MedicareNum = @MedicareNum'
ELSE N' ' END
+ CASE WHEN @LastName=''
THEN N' AND LastName = @LastName'
ELSE N' ' END
+ CASE WHEN @PatientID=''
THEN N' AND PatientID = @PatientID '
ELSE N'' END
EXECUTE sp_executesql @Sql
,N'@MedicareNum nchar(10), @LastName varchar(50),@PatientID nchar(10)'
,@MedicareNum
,@LastName
,@PatientID
END
我也试过它说当@MedicareNum =''时,我使用了你的解决方案(IS NOT NULL)并且它不起作用。我也试过: 开始
Select * from Patient
WHERE (@MedicareNum=MedicareNum or @MedicareNum='')
AND (@LastName=LastName or @LastName='')
AND (@PatientID=PatientID or @PatientID='')
End
^此代码返回数据,MedicareNum 的数据正确,但按 LastName 和 PatientID 搜索的数据不正确。
【问题讨论】:
标签: sql-server stored-procedures