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

Tsql 在t-sql中有没有可能没有参数的函数?,tsql,Tsql,我被迫在这个函数中放入@noparameter varchar(1)=null? 如何创建一个函数来返回一个没有参数的表 ALTER FUNCTION [dbo].[DropDownIndividuals](@noparameter varchar(1)=null) RETURNS @IndividualsList TABLE( Case_Number VARCHAR(11) ,LastName VARCHAR(100) ,F

我被迫在这个函数中放入@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; ALTER函数[dbo].[DropDownIndividuals](@noparameter varchar(1)=null) 返回 @个人列表表( 案例编号VARCHAR(11) ,LastName VARCHAR(100) ,名为VARCHAR(100) ,Midlename VARCHAR(100) ,全名VARCHAR(100) ) 作为 开始 插入@IndividualsList 选择不同的 cast(Case_编号为varchar(10))作为Case_编号 ,[姓氏] ,[名字] ,[Middlename] ,rtrim([Lastname]+'+[Firstname])作为全名 来自[MHMODSSQL1P].[ODS].[dbo].[联系] 其中,[LastName]不为null,[FirstName]不为null UNION ALL选择null,null,null,null,null 按[姓氏]订购 返回 结束;
您应该能够通过以下方式完成此任务:

ALTER FUNCTION [dbo].[DropDownIndividuals]()
但是,由于表值函数本质上是一个参数化视图,因此您最好不要使用没有参数的TVF:

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

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

正如Sachin正确回答的那样:

FUNCTION[dbo].[DropDownIndividuals]()

需要注意的是,即使函数没有参数,也应该使用空括号调用函数,否则会出现错误,例如[找不到多部分标识符“dbo.dropdownpolders]

SELECT dbo.DropDownIndividuals()

没有理由仅仅为了重新运行而将数据插入临时表。直接返回,或者最好写一个视图。@Mangus:严格地说,看起来他并没有返回任何东西。友好的留言。。。没有必要在标题前加上标记。@实际上,这是表值UDF的正确语法。但是写一个内嵌的UDF@Mangus会更好:我的错误;你说得对。在任何情况下,在这种情况下,视图实际上似乎比内联udf更好,因为没有参数。这是一个使用其他函数很容易找到它的问题。我们只想在一个地方查找所有需要的内容。@user475337:视图和TVF之间的性能差异很大。如果你所做的事情可以(正常地)用标准的非过程SQL完成,那么你真的应该使用一个视图。@Adam Robinson,@user475337:这种TVF很糟糕。内联TVF与视图相同。-1:在
SELECT
语句中没有参数,只有空括号。这正是我的观点!!即使函数中没有参数,除非在视图中调用时输入空括号,否则将返回错误!那是因为它是一个“函数”。
SELECT dbo.DropDownIndividuals()