日期:2014-05-18  浏览次数:20527 次

自定义函数的参数默认值不能使用,大侠们帮忙看看啊!
Create     FUNCTION   fn_get_xxx  
(@s   varchar(6),
  @e   char(2)   =   null)
RETURNS   float
AS
BEGIN

...

END

编译完成以后,如果第二个参数不指定的话,执行就报错。

select   dbo.fn_get_xxx   ( '000000 ')

错误信息:
服务器:   消息   313,级别   16,状态   2,行   1
为过程或函数   dbo.fn_get_xxx   提供的参数数目不够。

如果是这样:
select   dbo.fn_get_xxx   ( '000000 ',null)
就可以得到正确的结果。我大多数的使用情况都是不用指定第二个参数的,如果都要指定第二个参数的话,用起来就太麻烦了。

我想知道怎么才能不用指定有默认值的参数。

大侠们帮忙看看,谢了先!


------解决方案--------------------
呵呵,好像不行

sql server 函数不支持重载吧


------解决方案--------------------
多指定一个null,好像也没有麻烦多少阿
------解决方案--------------------
写成存储过程,存储过程的最后连续的几个参数可以省略。
------解决方案--------------------
--function是不支持,不过可以改为 存储过程,支持缺省参数调用,如:
Create proc fn_get_xxx
@s varchar(6),
@Returns float out,
@e char(2) = null
AS
...

go

--调用
declare @Returns float
exec fn_get_xxx '000000 ',@Returns out
------解决方案--------------------
函数的参数必须传入。

------解决方案--------------------
function还真不支持。