是否有可能在t-sql中没有参数的函数?

时间:2011-02-14 17:48:19

标签: tsql

我被迫在这个函数中放一个@noparameter varchar(1)= null? 如何创建一个函数来返回没有参数的表!


ALTER FUNCTION [dbo].[DropDownIndividuals](@noparameter varchar(1)=null)
RETURNS
    @IndividualsList TABLE(
          Case_Number VARCHAR(11)
         ,LastName    VARCHAR(100)
         ,FirstName   VARCHAR(100)
         ,Midlename   VARCHAR(100)
         ,FullName    VARCHAR(100) 
        )
AS  
BEGIN
       INSERT INTO @IndividualsList
       SELECT DISTINCT
       cast(Case_Number as varchar(10))as Case_Number
      ,[Lastname]
      ,[Firstname]
      ,[Middlename]
      ,rtrim([Lastname]+ ' '+ [Firstname]) as FullName
      FROM [MHMODSSQL1P].[ODS].[dbo].[Contact]
      WHERE [LastName] is not null and [FirstName] is not null
      UNION ALL SELECT null,null,null,null,null
      ORDER BY [LastName]

      RETURN 

END;

3 个答案:

答案 0 :(得分:8)

FUNCTION [dbo].[DropDownIndividuals]()

您可以使用开括号和近括号来定义不带参数的函数,假设您使用的是SQL服务器。

答案 1 :(得分:2)

你应该能够做到这样的事情:

ALTER FUNCTION [dbo].[DropDownIndividuals]()

但由于表值函数本质上是一个参数化视图,你可能只是use a view而不是没有参数的TVF:

CREATE VIEW [dbo].[DropDownIndividuals]
AS
SELECT -- etc

答案 2 :(得分:1)

萨钦正确地给出了答案:

FUNCTION [dbo].[DropDownIndividuals]()

重要的是要注意,即使函数没有参数,你仍然应该用空括号调用函数,否则你会得到一个错误,如[多部分标识符“dbo.DropDownIndividuals”不能被发现]。

SELECT dbo.DropDownIndividuals()