tsql - 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 的范围有关——尽管我对为什么会这样的理解更加有限。
任何人都可以提出一种可以达到预期结果的方法吗?
解决方案
推荐阅读
- nativescript - 迁移到 NativeScript 7
- python - 有人告诉我,python 线程并不意味着我的代码是并行运行的,但确实如此。有人可以解释吗?
- r-markdown - 为什么 blogdown::hugo_build() 不能处理 Lua 过滤器?
- laravel - 如何从嵌套关系中获取特定列 - Laravel
- git - 如何根据我要克隆的 git 存储库来源自动更改我的本地 git config `user.email`?
- shell - 带变量的 curl 不起作用 - Shell 脚本
- linux - 尝试访问结构文件 private_data 时出错
- javascript - 如何在页面上的隐藏元素上使用 jQuery 添加类和删除类
- php - 更改 PHP 收到的 URL(通过 .htaccess?)
- css - CSS Wordpress 联系表格定制