将SQL函数参数默认设置为all

时间:2014-03-19 09:13:00

标签: sql function select parameters default

好的,所以我有一个包含4个参数的大型查询..

CREATE FUNCTION [dbo].[Doorsdoorsdoors]
(
@start datetime, 
@end datetime, 
@day varchar,
@doornumber int
)
RETURNS TABLE AS RETURN (

SELECT bla bla bla....

我想要做的是将其默认参数设置为all(*)

因此,当我使用select语句时,我可以使用default,因此它返回所有结果,如下所示:

SELECT * FROM Doorsdoorsdoors (default,default,default,default)

我想它会是这样的:

CREATE FUNCTION [dbo].[Doorsdoorsdoors]
(
@start datetime LIKE '%', 
@end datetime LIKE '%', 
@day varchar LIKE '%',
@doornumber int LIKE '%'
)
RETURNS TABLE AS RETURN (

SELECT bla bla bla....

或者可能在SELECT * FROM Doorsdoorsdoors (default,default,default,default)中使用类似的东西...

SELECT * FROM Doorsdoorsdoors ('%','%','%','%')

2 个答案:

答案 0 :(得分:1)

CREATE FUNCTION [dbo].[Doorsdoorsdoors]
    (
    @start datetime = NULL --default value, 
    @end datetime = NULL --default value, 
    @day varchar =NULL --default value,
    @doornumber int = NULL --default value
    )
    RETURNS TABLE AS RETURN (

select * from Doorsdoorsdoors where ((@start is NULL) OR (start=@start))
AND ((@end is NULL) OR (start=@end)) AND....
)

调用程序包含所有默认值:

SELECT * FROM Doorsdoorsdoors (default,default,default,default)

答案 1 :(得分:0)

尝试以下

CREATE FUNCTION [dbo].[Doorsdoorsdoors]
      (
      @start datetime = NULL,
      @end datetime = NULL, 
      @day varchar = NULL,
      @doornumber int = NULL
      )
      RETURNS TABLE AS RETURN (

      SELECT bla bla bla....

      WHERE ((@start is NULL) OR (default=@start))
      AND ((@end is NULL) OR (default=@end))
      AND ((@day is NULL) OR (default=@day))
      AND ((@doornumber is NULL) OR (default=@doornumber))

然后尝试用

调用它
      SELECT * FROM Doorsdoorsdoors (default,default,default,default)

      SELECT * FROM Doorsdoorsdoors (default,default,default,'123')