PDA

View Full Version : نوشتن چندین شرط پشت سرهم با دستور if در sql server 2005



maaaaaa
چهارشنبه 22 اردیبهشت 1389, 13:36 عصر
با سلام به دوستان

من می خوام چندین شرط پشت سرهم را در sql با دستور if بنویسم و نمی خوام هم از case استفاده کنم ،
لطفا برام توضیح بدید که به چه شکل می توان چندین شرط را با دستور if بنویسم؟مثلا :

if (شرط اول برقرار باشه)
-----
----(یک سری دستورات را اجرا کنه)
-----
----
if(شرط دوم)
----
----
----(یک سری دستورات را اجرا کنه)
----
-----

if(شرط سوم)
----
----
----(یک سری دستورات را اجرا کنه)
----
-----

محمد سلیم آبادی
چهارشنبه 22 اردیبهشت 1389, 13:40 عصر
IF condition_1
BEGIN .... END
ELSE IF condition_2
BEGIN ... END
ELSE IF condition_3
BEGIN ... END

maaaaaa
پنج شنبه 23 اردیبهشت 1389, 07:53 صبح
با سلام،ببینید اشکال تریگر من چیه که وارد شرط دوم if م نمی شه؟



create trigger [t_m_t] on [dbo].[tbl_entezar]
after insert
as
declare @darkhasti int
declare @free int,@feli int
select @darkhasti= tedad_darkhasti from inserted

select @free=t.mojodi_free
from tbl_items t
inner join inserted i
on(( t.part_no=i.part_no )and(t.type_stor=i.type_stor))
where t.mojodi_free=0

select @feli=t.mojodi_feli
from tbl_items t
inner join inserted i
on(( t.part_no=i.part_no )and(t.type_stor=i.type_stor))

if((@free=0)and(@darkhasti<=@feli))
begin
update t
set t.mojodi_reserve=@darkhasti,t.mojodi_free=@feli-@darkhasti
from tbl_items t
inner join inserted i
on(t.part_no=i.part_no)and(t.type_stor=i.type_stor )
end

else if((@free<>0)and(@darkhasti<=@free))
begin
update t
set t.mojodi_reserve=@darkhasti,@free=t.mojodi_free-@darkhasti
from tbl_items t
inner join inserted i
on(t.part_no=i.part_no)and(t.type_stor=i.type_stor )
end

محمد سلیم آبادی
پنج شنبه 23 اردیبهشت 1389, 08:24 صبح
در شرط دوم عبارت بولیین به جای:


else if((@free<>0)and(@darkhasti<=@free))

نباید این باشه؟


else if((@free<>0)and(@darkhasti<=@feli))