不希望在存储过程中传递所有不必要的参数

时间:2011-04-12 05:59:48

标签: sql

我有一个stroed程序有两个事件,一个是插入,另一个是删除 使用标志。当我必须删除..i必须传递删除时实际上不需要的所有参数....我需要你的帮助来解决它。

我的代码是这样的..

ALTER     Proc Proc_Manage_Opening_Leave @ActionFlag int,@SNo int,@LEAVE_ID int,@GIVEN decimal,@GIVENMONTH int,@GIVENYEAR int,@APPROVEDBY int,@IsOpening varchar(6),@EMP_ID int
as
SET NOCOUNT ON
if(@ActionFlag=0)
BEGIN

insert into Tbl_Org_leave_log (EMP_ID,LEAVE_ID,GIVEN,GIVENMONTH,GIVENYEAR,ApprovedBy,OP_FLAG,GIVENDAY)
values(@EMP_ID,@LEAVE_ID,@GIVEN,@GIVENMONTH,@GIVENYEAR,@APPROVEDBY,
(
case
when @IsOpening='False' then 0
when @IsOpening='True' then 1
ELSE NULL
END
),
datepart(day,getdate()))
END

 IF(@ActionFlag=1)
BEGIN

delete from tbl_org_leave_log where SNo=@SNo
END


GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO 

2 个答案:

答案 0 :(得分:2)

我建议为每个操作创建一个单独的SP。

答案 1 :(得分:1)

将参数更改为默认值,如下所示:

alter     proc Proc_Manage_Opening_Leave
  @ActionFlag int
 ,@SNo int = null
 ,@LEAVE_ID int = null
 ,@GIVEN decimal = null
 ,@GIVENMONTH int = null
 ,@GIVENYEAR int = null
 ,@APPROVEDBY int = null
 ,@IsOpening varchar(6) = null
 ,@EMP_ID int = null
as 

然后您不需要为它们提供值。

但我同意Akram你应该做两个单独的程序