PDA

View Full Version : تغییر شرط Where با توجه به پارامتر ورودی SP



odiseh
دوشنبه 10 مهر 1385, 13:24 عصر
سلام دوستان

می خواستم بدون آیا روش شسته رفته و تمیزی برای نوشتن یه sp که شرط Where اش با توجه به پارامتر ورودی SP تغییر میکنه وجود داره. الان من وقتی می خوام که SP بنویسم از روش غیر اصولی و تکرار نوشتن بدنه SP با Where های متفاوت ، استفاده می کنم مثل این::
create proc usp_sqlOne
@B int
AS
if @B = -1
Select *
from MyTable
Where B>=0

if @B=0
Select *
From MyTable
Where B=0

if @B=1
Select *
From MyTable
Where B=1

لطفا منو راهنمایی کنید

whitehat
دوشنبه 10 مهر 1385, 17:20 عصر
من از این روش استفاده می کنم


select * form MyTable
where
((@b=-1) and (MyColumn>=0))
or
((@b=0) and (MyColumn=0))
or
((@b=1) and (MyColumn=1))
موفق باشید

DataMaster
دوشنبه 10 مهر 1385, 17:54 عصر
استفاده از caseفکر کنم بدردت بخوره

odiseh
سه شنبه 11 مهر 1385, 08:45 صبح
سلام
ممنون جانب WhiteHat....روش خوبیه.....حتما امتحانش می کنم.

ولی ِDataMaster عزیز میشه بگی چطوری Case رو در این مساله خاص بکار ببرم؟ آیا مثالی داری؟
باز هم تشکر از هر دوی شما

Kamyar.Kimiyabeigi
سه شنبه 11 مهر 1385, 15:29 عصر
شما میتونین از SP های Dynamic استفاده کنین


CREATE PROC test @Prm_wherecondition VARCHAR(100)
AS
EXECUTE('SELECT * FROM table1 WHERE ' + @Prm_wherecondition)