Sql server 向表变量动态添加50列
我想在定义为变量的表中添加大约50列。这些列的名称来自另一个表,基本上它们只是数字-DEPA_键。部门密钥 是否可以使用循环或类似的方法动态添加这些列 表在此处定义为变量我想动态添加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添加列 您可以更改临时表的结构。如果将变量更改为临
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)
;