定义表类型参数

时间:2016-09-01 20:54:57

标签: sql-server

我只是尝试创建一个名为“ListOfName”的表类型参数,并在我的过程中设置这种类型的参数。但是发生了错误:

  

必须声明标量变量“@Table_Name_List”

但我宣布

 CREATE TYPE ListOfName AS TABLE (Table_Name nvarchar(50) );

 CREATE PROCEDURE spTest 
    @Table_Name_List    ListOfName   READONLY

 AS
    SELECT * from dbo.Table_Size_Daily

    WHERE    Table_NAME IN (@Table_Name_List) 
 Go

如果我在定义块之前添加一个语句,

 DECLARE @Table_Name_List  AS ListOfName;

错误是:

  

已声明变量名'@Table_Name_List'。   变量名在查询批处理中必须是唯一的或存储的   过程

我该如何解决?非常感谢

1 个答案:

答案 0 :(得分:1)

我可以看到对表类型有什么误解。即使表类型中只有一列,也不能将其视为单列参数。

  

将Table类型参数视为任何其他表,而不考虑   您拥有的列数。

为了解决您的问题,我希望您的WHERE条件更改如下:

WHERE Table_NAME IN (SELECT Table_Name FROM @Table_Name_List) 

但是,我强烈建议您在继续执行任何实现之前阅读Table类型的一些教程。例如,MSDN上的This Table Valued Parameters article可以清楚地了解它。