我当前正在尝试将变量@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]'
我第一次尝试的问题是每个@IF语句都声明了变量@MyTable,即使被评估为false。这将导致错误,指出已声明变量@MyTable。 backend对此问题进行了讨论。
我的第二个问题也与变量@MyTable的范围有关-尽管我对为什么是这种情况的理解更加有限。
任何人都可以建议一种可以达到预期效果的方法吗?