好的,所以我有一个包含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 ('%','%','%','%')
答案 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')