[英]Table-valued function that takes table as parameter and performs join
我使用SQL Server2016。我想编写一个函数,该函数将一个表作为参数,然后对该表与另一个表执行联接。 我声明了以下类型:
CREATE TYPE WorklistTable AS TABLE (WorklistId int NOT NULL)
然后我将其用于根据特定条件进行选择的许多函数中
CREATE FUNCTION [dbo].[fnGetSomeData] (
@WorklistIds WorklistTable readonly
)
RETURNS TABLE
AS RETURN
(
select WorklistId, wlu.UserId
from @WorklistIds
join [dbo].[WorklistUser] wlu on wlu.WorklistId = @WorklistIds.worklistId
-- the rest is omitted
);
我收到以下错误:
必须声明标量变量“ @WorklistIds”。
我试图声明该变量,但出现错误:
变量名“ @WorklistIds”已经声明。 变量名称在查询批处理或存储过程中必须唯一。
转向表变量时,应使用别名。
CREATE FUNCTION [dbo].[fnGetSomeData] (
@WorklistIds WorklistTable readonly
)
RETURNS TABLE
AS RETURN
(
select WorklistId, wlu.UserId
from @WorklistIds t
join [dbo].[WorklistUser] wlu on wlu.WorklistId = t.worklistId
-- the rest is omitted
);
当引用表变量中的列时,不能直接使用@Table
名称。 您需要为表格添加别名或将其包装在方括号中:
select WorklistId, wlu.UserId
from @WorklistIds As W
join [dbo].[WorklistUser] wlu on wlu.WorklistId = W.worklistId
要么
select WorklistId, wlu.UserId
from @WorklistIds
join [dbo].[WorklistUser] wlu on wlu.WorklistId = [@WorklistIds].worklistId
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.