Sql server 向表变量动态添加50列

Sql server 向表变量动态添加50列,sql-server,tsql,Sql Server,Tsql,我想在定义为变量的表中添加大约50列。这些列的名称来自另一个表,基本上它们只是数字-DEPA_键。部门密钥 是否可以使用循环或类似的方法动态添加这些列 表在此处定义为变量我想动态添加50列: DECLARE @USERS TABLE ( USER_KEY INT, USDE_HSU DECIMAL(8,2) ) 查询所有部门: SELECT DEPA_KEY FROM CADEPA 无法更改表变量的结构。 因此,您将无法向@USERS添加列 您可以更改临时表的结构。如果将变量更改为临

我想在定义为变量的表中添加大约50列。这些列的名称来自另一个表,基本上它们只是数字-DEPA_键。部门密钥

是否可以使用循环或类似的方法动态添加这些列

表在此处定义为变量我想动态添加50列:

DECLARE @USERS TABLE
(
  USER_KEY INT,
  USDE_HSU DECIMAL(8,2)
)
查询所有部门:

SELECT DEPA_KEY FROM CADEPA

无法更改表变量的结构。 因此,您将无法向@USERS添加列

您可以更改临时表的结构。如果将变量更改为临时表,则可以动态添加列:

创建表用户 用户密钥INT, 徐德熙小数点8,2 声明@col_name VARCHAR100 ,@Sql VARCHARMAX 声明列名称游标 对于 选择DEPA_键 来自卡德帕 打开列名称 从col_name获取下一个 进入@col_name 而@@FETCH\u STATUS=0 开始 SET@Sql='altertable用户添加'+QUOTENAME@col_name+'INT NULL' -打印@Sql EXEC@Sql 从col_name获取下一个 进入@col_name 终止 关闭列名称 取消分配列名称
好的,您不能更改表变量的结构:

DECLARE @T AS TABLE
(
    col1 int
);

ALTER TABLE @T 
    ADD col2 char(1)       
;
这将产生一个错误

但是,您可以使用临时表执行此操作:

CREATE TABLE #T 
(
    col1 int
);

ALTER TABLE #T 
    ADD col2 char(1)
;