首页 > 解决方案 > TSQL - 如何根据某些条件将变量声明为不同的(udtt)类型?

问题描述

我目前正在尝试将变量 @MyTable 声明为用户定义的表类型 (udtt)。但是,它被声明为哪个 udtt 取决于变量 @Schema 的值。为此,我做了以下尝试:

尝试一:

IF (@Schema = 'sch_A') DECLARE @MyTable [sch_A].[udtt_Table]
IF (@Schema = 'sch_B') DECLARE @MyTable [sch_B].[udtt_Table]
IF (@Schema = 'sch_C') DECLARE @MyTable [sch_C].[udtt_Table]

尝试二:

DECLARE @sql = 'DECLARE @MyTable [' + @Schema + '].[udtt_Table]'

我第一次尝试的问题是变量@MyTable 是由每个 IF 语句声明的,即使评估为 false。这会导致一个错误,指出变量@MyTable 已经被声明,被抛出。这个问题在这里讨论。

我的第二个问题也与变量@MyTable 的范围有关——尽管我对为什么会这样的理解更加有限。

任何人都可以提出一种可以达到预期结果的方法吗?

标签: tsqldynamic-sqluser-defined-types

解决方案


推荐阅读