【发布时间】:2021-08-05 16:28:44
【问题描述】:
我正在尝试使用表值参数将列传递给 SQL Server 中的“IN”子句。为此,我需要声明一种表。 SQL 表达式:
DECLARE TYPE myType AS TABLE( myid varchar(50) NULL);
给出错误:
'myType' 不是可识别的 CURSOR 选项。
将 DECLARE 替换为 CREATE 效果很好。 使用“CREATE”需要在任何下一个 SQL 调用中删除这种类型,例如:
IF TYPE_ID('myType') IS NOT NULL DROP TYPE myType;
但我只想在这个 SQL 表达式中使用类型“myType”。 如何将一个类型声明为表而不永久创建它并且不在所有请求中删除它?
【问题讨论】:
-
你为什么不直接创建这个?无法即时创建一个仅限于单个请求的请求
-
我倾向于为各种查询和过程准备一堆通用的单列和两列表类型,然后你不必每次都声明它们
标签: sql sql-server tsql