2011-02-14 130 views
2

我被迫在這個函數中放置@noparameter varchar(1)= null? 如何創建一個函數來返回一個沒有參數的表!是否有可能在t-sql中沒有參數的函數?

 

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; 
+0

沒有理由將數據插入到臨時表中以便重新調用它。直接返回,甚至更好地寫一個視圖。 – Magnus 2011-02-14 17:54:24

+0

@Mangus:嚴格來說,它看起來並不像他正在返回任何東西*。 – 2011-02-14 18:01:35

+0

友情提示...這是沒有必要預先標記你的標題。 – Will 2011-02-14 18:06:12

回答

7
FUNCTION [dbo].[DropDownIndividuals]() 

你可以只用打開和關閉括號DEFI不帶參數的ne函數,假設你正在使用SQL服務器。

2

你應該是一個能夠與像這樣做:

ALTER FUNCTION [dbo].[DropDownIndividuals]() 

但由於表值函數基本上是一個參數化的視圖,你可能也只是use a view,而不是一個TVF不帶參數:

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

由於薩欽相當正確地給出了答案:

FUNCTION [dbo].[DropDownIndividuals]()

需要注意的是,即使該函數沒有參數,你仍然應該調用帶有空括號的功能是非常重要的,否則你會會得到一個錯誤,例如[多部分標識符「dbo.DropDownIndividuals」無法找到]。

SELECT dbo.DropDownIndividuals() 
相關問題