私はSQL Serverのストアドプロシージャを持っています私はそれがパラメータを渡すときにすべてのレコードを返したい場合は、最小値と最大値を設定して実行します。SQL Serverのストアドプロシージャのパラメータの戻り値のすべてのレコードがない場合は、関数に渡すパラメータ
alter PROCEDURE SearchBYProjects
@location NVARCHAR(50),
@purpose NVARCHAR(50),
@type NVARCHAR(50),
@min NVARCHAR(50),
@max NVARCHAR(50)
AS
SELECT
p.ID,
p.ProjectName,
p.Areas,
p.PaymentSystem,
p.ReceivedDate,
p.PropertyClassification,
p.ProjectImage,
l.LocationName,
Pur.PurposeName,
t.TypeName
FROM dbo.Projects AS p
LEFT JOIN dbo.Locations AS l ON p.LocationID = l.ID
LEFT JOIN dbo.Purpose pur ON p.PurposeID = pur.ID
LEFT JOIN dbo.[Types] AS t ON p.TypeID = t.ID
WHERE UPPER(ISNULL(l.LocationName,N'')) LIKE N'%' + UPPER(@location) + '%'
AND UPPER(ISNULL(pur.PurposeName,N'')) LIKE N'%' + UPPER(@purpose) + '%'
AND UPPER(ISNULL(t.TypeName,N'')) LIKE N'%' + UPPER(@type) + '%'
AND UPPER(ISNULL(p.Areas,'')) BETWEEN @min AND @max
GO
EXEC dbo.SearchBYProjects @location ='',@purpose='',@type='',@min='',@max=''
助けてください。
私はこのあなたはそれがすべてのレコードを返すようにパラメータを渡す必要があり、書き込みのパラメータとリターンのすべてのレコードがないとの手順を実行したい、私も同じように動作していないデータ型をintにnvarchar型から地域の列のデータ型を変更しましたパラメータを渡さないとすべてのレコードを返すのですか? – hashim
この行はEXEC dbo.SearchBYProjects @location = ''、@ purpose = ''、@ type = ''、@ min = ''、@ max = ''を実行します。 – hashim
これは動作しますが、影響。このタイプのキャッチすべてのクエリを改善する方法については、この記事をご覧ください。 http://sqlinthewild.co.za/index.php/2009/03/19/catch-all-queries/ –