2014-08-28 62 views
0

我在SQL Server Management Studio 2008中創建了一個簡單的用戶定義函數作爲測試。它根據出生日期和第二個日期計算出一個人的年齡,我們想要這個人的年齡。該功能可以讀取:SQL UDF中'太多參數',但仍能正常運行

CREATE FUNCTION [*myprofile*].[udf_getAge] 
    (@DOB AS DATE, @AgeAt DATE) 
RETURNS INTEGER 
AS 
BEGIN 
    RETURN (DATEDIFF(YYYY,@DOB,@AgeAt)) 
END 

的功能似乎有一個當它被稱爲與顯示「過程或函數‘我的資料 .udf_getAge’指定的參數太多」的錯誤提示(紅色下劃線)。然而,當函數被調用時,它可以正確運行。我在查詢中使用該功能的示例如下:

SELECT 
Forename + ' ' + Surname AS Name, 
[*myprofile*].udf_getAge(DOB, GETDATE()) As Age 

FROM 
*myTable* 

這種明顯的錯誤對任何人都有意義嗎?就像我說的那樣,它運行良好,但在我認爲它有太多爭論的情況下,它並不適合我。

回答

1

SQL Server Management Studio(SSMS)緩存UDF簽名以應用語法高亮顯示,如果函數簽名在同一會話內發生更改,您可能會得到該行爲。請嘗試重新啓動SSMS,並且「錯誤」應該消失。

+1

我剛剛寫完這個問題後就試過了。有時候,這是我們忽視的最簡單的事情;有效。對於任何未來可能遇到相同問題的人,我會留下問題而不是刪除它,即使這對我來說也是一種尷尬! – cope 2014-08-28 13:39:09

+1

重啓SSMS是一大挑戰。更小的一個是嘗試從「查詢」菜單(或從您正在工作的窗口中的上下文菜單)禁用和重新啓用智能感知。 – 2014-08-28 15:40:40

1

嘗試按下Ctrl鍵++- [R在SSMS刷新。