2013-07-24 6 views
1

я хранимую процедуру так:Второй IF условие не работает должным образом

ALTER procedure [dbo].[fetchkey] 
@carid nvarchar(50) =null 
as 
begin 
select t.TBarcode, t.Status, [dbo].[keyloc](t.Status) as 'Key location' 
from Transaction_tbl t 
where [email protected] 
end 

также у меня есть одна функция, как это:

ALTER function [dbo].[keyloc](@status numeric(18,2)) RETURNS varchar(50) 
as 
begin 

declare 
@Ename nvarchar(50), 
@keylocation Varchar(50) 

if @status= 1 
select @Ename= e1.Ename from Transaction_tbl t 
join EmployeeMaster_tbl e1 
ON t.Ecode=e1.Ecode 
select @keylocation='With PAIC'+'('[email protected]+')' 
return @keylocation 
if @status= 4 
select @Ename= e2.Ename from Transaction_tbl t 
join EmployeeMaster_tbl e2 
ON t.DelEcode=e2.Ecode 
select @keylocation='With Driver'+'('[email protected]+')' 
return @keylocation 
end 

Если статус = 4, тогда я получаю KeyLocation нуль , если статус равен 1, тогда ответ становится правильным, что-то не так с моим кодом.

Пожалуйста, помогите мне найти Раствор

ответ

2

окружать код внутри состояния с BEGIN и END ключевыми словами, например:

if @status= 1 
BEGIN 
    select @Ename= e1.Ename from Transaction_tbl t 
    join EmployeeMaster_tbl e1 
    ON t.Ecode=e1.Ecode 
    select @keylocation='With PAIC'+'('[email protected]+')' 
END 

if @status= 4 
BEGIN 
    select @Ename= e2.Ename from Transaction_tbl t 
    join EmployeeMaster_tbl e2 
    ON t.DelEcode=e2.Ecode 
    select @keylocation='With Driver'+'('[email protected]+')' 
END 

return @keylocation 
+0

great..now рабочим fine.thanks много – user2603688

Смежные вопросы