以下簡單的SQL示例返回錯誤。SQL錯誤:將表參數傳遞給表值函數時必須聲明「標量變量」
這裏是一個的傳遞給表值函數表類型:
CREATE TYPE Ids
AS TABLE
(
Id int NOT NULL,
PRIMARY KEY(Id)
);
GO
這裏是失敗的表值函數:
CREATE FUNCTION GetIds
(
@ids -- or null
Ids READONLY
)
RETURNS
@result
TABLE
(
EachId int
)
AS
BEGIN
IF @ids IS NOT NULL
INSERT INTO @result
SELECT Id
FROM @ids;
RETURN;
END;
GO
返回的錯誤是:
Msg 137, Level 16, State 1, Procedure GetIds, Line 28
Must declare the scalar variable "@ids".
我讀過的帖子說,它發生在SQL兼容性級別太舊時發生,但以下退貨100:
SELECT compatibility_level
FROM sys.databases
WHERE name = 'TheDatabaseName';
任何建議將不勝感激。
錯誤是因爲您使用了未聲明的變量。示例'declare @ids table(Ids int)' –
S.Visser:它被聲明爲Ids類型。這是你如何傳遞一個表作爲參數。 – uncaged
其創建,未聲明。如果你引用它,你需要聲明它。認爲這將是MSDN文檔將解釋https://msdn.microsoft.com/en-us/library/bb510489.aspx –