我使用的是SQL Server 2016。 我想编写一个函数,它将一个表作为参数,然后在该表上与另一个表执行连接。 我已声明以下类型:
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'。变量名在查询批处理或存储过程中必须是唯一的。
答案 0 :(得分:4)
当你加入表变量时,你应该使用别名。
<tr ng-repeat="item in emailsList track by $index">
<td>
<div class="rounded-checkbox">
<input class="form-check-input" type="checkbox">
<span></span>
</div>
</td>
<td class="col-xs-12">{{ item.emails[$index] }}</td>
<td>-</td>
</tr>
答案 1 :(得分:2)
在引用表变量中的列时,不能直接使用@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