关于存储过程与函数编写的问题
我写了两个函数,一个存储过程。是不是能在exec中完成函数调用,或者把函数部分的功能放在一个存储过程中,麻烦大家帮我修改修改 
 建立存储过程: 
 create   procedure   agent_efyc1 
 @agent_code   varchar(10) 
 as 
 if   (select   datediff(mm,probation_date, 
 	case   when   status= 'A '   then   getdate()    
 		else   cast(T_DATE+18000000   as   varchar(8))   end)+1    
 from   ag1tab      where   probation_date   >    0   and   agent_code   =   @agent_code)   >    1 
 	begin    
 		select   fac   +   spc   as   EFYC 
 		from   prdtab_sh 
 		where   agnt   =   @agent_code   and   txdate   between   dbo.s_date( '2007-05-21 ')   and   dbo.e_date( '2007-06-20 ') 
 	end 
 else 
 	begin    
 		select   fac   +   spc   as   EFYC 
 		from   prdtab_sh 
 		where   agnt   =   @agent_code   and   txdate   between    '2002-01-01 '   and   dbo.e_date( '2007-06-20 ') 
 	end   
 执行过程: 
 exec   agent_efyc1    '1001910A10 '     
 两个关于日期的函数: 
 create   function   s_date   (@inputdate   datetime)   returns   datetime 
 begin 
 	declare   @returndate   datetime 
 	if   datepart(dw,   @inputdate)   -   1   =   1 
 	set   @returndate   =   @inputdate   +   1 
 	else   if   datepart(dw,   @inputdate)   -   1   =   0 
 	set   @returndate   =   @inputdate   +   2 
 	else    
 	set   @returndate   =   @inputdate    
 	return   @returndate 
 end     
 create   function   e_date   (@inputdate   datetime)   returns   datetime 
 begin 
 	declare   @returndate   datetime 
 	if   datepart(dw,   @inputdate)   -   1   =   6 
 	set   @returndate   =   @inputdate   +   2 
 	else   if   datepart(dw,   @inputdate)   -   1   =   0 
 	set   @returndate   =   @inputdate   +   1 
 	else    
 	set   @returndate   =   @inputdate 
 	return   @returndate 
 end   
 现在问题是每次要在函数里把日期写好才能再创建存储过程并执行,是不是能在exec中完成函数调用,或者把函数部分的功能放在一个存储过程中,麻烦大家帮我修改一下,谢谢     
------解决方案--------------------create procedure agent_efyc1 
 @agent_code varchar(10), 
 @stime datetime, 
 @etime datetime 
 as 
 if (select datediff(mm,probation_date, 
 	case when status= 'A ' then getdate()  
 		else cast(T_DATE+18000000 as varchar(8)) end)+1  
 from ag1tab  where probation_date >  0 and agent_code = @agent_code) >  1 
 	begin  
 		select fac + spc as EFYC 
 		from prdtab_sh 
 		where agnt = @agent_code and txdate between dbo.s_date(@stime) and dbo.e_date(@etime) 
 	end 
 else 
 	begin  
 		select fac + spc as EFYC 
 		from prdtab_sh 
 		where agnt = @agent_code and txdate between  '2002-01-01 ' and dbo.e_date( '@etime ') 
 	end     
 exec agent_efyc1  '1001910A10 ', '2007-05-21 ', '2007-06-20 '