求助一个困扰我很久的问题:我写的表函数,例如:create function test
(@编号 varchar(20))
returns table
as
return
(
select * from 表 where 编号=@编号
)我希望在调用时,如果不加参数,则查询的结果为:
select * from 表请问如何才能办到?(要求:不使用宏替换即不要使用拼字符的方式,因为我的代码非常长,使用宏替换会很麻烦)
(@编号 varchar(20))
returns table
as
return
(
select * from 表 where 编号=@编号
)我希望在调用时,如果不加参数,则查询的结果为:
select * from 表请问如何才能办到?(要求:不使用宏替换即不要使用拼字符的方式,因为我的代码非常长,使用宏替换会很麻烦)
(@编号 varchar(20))
returns table
as
return
(
select * from 表 where 编号=isnull(@编号,编号))
也希望当做是null值同样的处理,应该如何写?
也就是说:可能传null,也可能传''
(@编号 varchar(20))
returns table
as
return
(
select * from 表 where 编号=case when isnull(@编号,'')='' then 编号 ELSE @编号 END
)
(@编号 varchar(20))
returns table
as
return
还有其他的更好的写法吗?请指教,谢谢
(@编号 varchar(20))
returns @T table(COL INT,COL2 INT)
as BEGIN
IF ISNULL(@编号,'')=''INSERT @T
select COL ,COL2 from 表 --where 编号=@编号
ELSE
INSERT @T
select COL ,COL2 from 表 where 编号=@编号RETURN @T
END
由于我的代码其实不只是这么简单的一句 select 而是一句上百行的代码,这样写以后,整个代码会长一倍,将会很不好维护。