PDA

View Full Version : نحوه نوشتن شرط



mta.sce
دوشنبه 26 تیر 1391, 11:00 صبح
سلام
من میخوام یه شرط توی Store Procedure بنویسم اما گیر کردم
من از طرف برنامه یه مقداری به SP پاس میدم که مقادیر 0،1 و 2 میگیره
و اگه مقدار 1 یا 2 بود مقادیر درست و مرتبط با فیلد رو از جدول میخونه و میاره ، اما اگه 0 بود باید همه اطلاعات داخل جدولم رو بیاره و چیزی رو فیلتر کنه
برای مثال جدولم اینه
a 1
b 2
c 1
d 0
e 0
f 1
حالا اگه 0 پاس داده بشه به SP باید همه ی اطلاعات رو بیاره
منطق شرط رو نمیتونم پیدا کنم:ناراحت:

baktash.n81@gmail.com
دوشنبه 26 تیر 1391, 11:15 صبح
یه روش می تونه این باشه که شما یه if بزاری اگه مقدار ارسالی صفر بود یه select بدون شرط اجرا بشه ... در غیر اینصورت توی شرط Where مقدار فیلد مورد نظر رو با مقدار ورودی فیلتر می کنی ... به این صورت :

create proc test234 (@i int)
as
begin
if @i=0
Select * from roles
else
Select * from Roles Where Role_ID=@i
end

Galawij
دوشنبه 26 تیر 1391, 11:23 صبح
سلام،
شرط نمی خواد عزیز من،
مقدار اولیه اون پارامتر در SP را هنگام تعریف، مقدار اولیه صفر بدید و شرط رو به این شکل بنویسید:
WHERE((@IdContract=0)OR(dbo.TbContract.IdContract= @IdContract))

pashna
سه شنبه 27 تیر 1391, 09:11 صبح
سلام، می‌تونی از کؤری دینامیک هس استفاده کنی‌، مثلا :



CREATE PROC Test (@Param INT)
AS
BEGIN
DECLARE @Query nVARCHAR(500)
DECLARE @Where NVARCHAR(500)

SET @Where = ' WHERE 1 = 1 '

IF (@Param IS NOT NULL)
BEGIN
SET @Where = @Where + ' AND Field = @Param '
END

SET @Query = ' SELECT * FROM Table ' + @Where

EXEC sp_executesql @Query, N'@Param INT', @Param

END