我在創建行內表函式(回傳表的函式)時遇到問題。
該函式非常簡單 - 它需要“名字”(第一個字母) “姓氏” 出生日期:
CREATE FUNCTION dbo.fn_username
RETURNS TABLE
AS
RETURN
(SELECT
LEFT(FirstName, 1) LastName
CAST(YEAR(BirthDate) AS varchar(20))
FROM Employees)
我收到這些錯誤:
訊息 102,級別 15,狀態 1,程序 fn_username,第 2 行 [批處理開始第 26 行]
'RETURNS' 附近的語法不正確。訊息 178,級別 15,狀態 1,程序 fn_username,第 4 行 [批處理開始第 26 行]
在此背景關系中不能使用具有回傳值的 RETURN 陳述句。
誰能告訴我它的問題是什么?我已經構建了類似的功能并且沒有任何問題。
謝謝你們 !
uj5u.com熱心網友回復:
有幾個問題。
- 你沒有定義你的引數。如果你的函式沒有引數,你仍然必須
()在函式名之后定義它。 - 你已經用完了括號 (
())。您將整個查詢包裝在這些查詢中,使其成為子查詢并暗示您要回傳標量值,而不是表。 - 您省略了列的別名。
解決這些問題,您最終會得到以下結果:
CREATE FUNCTION dbo.fn_username()
RETURNS table
AS RETURN
SELECT CONCAT(LEFT(FirstName,1),LastName,YEAR(BirthDate)) AS YourColumnAlias
FROM dbo.Employees;
請注意,我也切換到CONCAT它更簡潔,但如果您想要NULL任何列,則NULL需要切換回連接運算子 ( )。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/418517.html
標籤:
下一篇:兩列帶日期(一周中的任何一天,另一列WEEKENDINGDATE(SATURDAY)BASEDON1stcolumn)
