我想向定义为变量的表中添加大约 50 列。这些列的名称来自另一个表,基本上它们只是数字 - DEPA_KEY。(部门重点)
是否可以使用循环或类似的东西动态添加这些列?
定义为变量的表(这里我想动态添加 50 列):
DECLARE @USERS TABLE
(
USER_KEY INT,
USDE_HSU DECIMAL(8,2)
)
Run Code Online (Sandbox Code Playgroud)
查询所有部门:
SELECT DEPA_KEY FROM CADEPA
Run Code Online (Sandbox Code Playgroud)
AFAIK,您不能更改表变量的结构:
DECLARE @T AS TABLE
(
col1 int
);
ALTER TABLE @T
ADD col2 char(1)
;
Run Code Online (Sandbox Code Playgroud)
这将产生错误。
但是,您可以使用临时表来执行此操作:
CREATE TABLE #T
(
col1 int
);
ALTER TABLE #T
ADD col2 char(1)
;
Run Code Online (Sandbox Code Playgroud)
无法更改表变量的结构。因此,您将无法将列添加到@USERS.
您可以更改临时表的结构。如果将变量更改为临时表,您将能够动态添加列:
CREATE TABLE #USERS
(
USER_KEY INT,
USDE_HSU DECIMAL(8,2)
)
DECLARE @col_name VARCHAR(100)
,@Sql VARCHAR(MAX)
DECLARE col_name CURSOR
FOR
SELECT DEPA_KEY
FROM CADEPA
OPEN col_name
FETCH NEXT FROM col_name
INTO @col_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Sql = 'ALTER TABLE #USERS ADD ' + QUOTENAME(@col_name) + ' INT NULL'
-- PRINT @Sql
EXEC (@Sql)
FETCH NEXT FROM col_name
INTO @col_name
END
CLOSE col_name
DEALLOCATE col_name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10346 次 |
| 最近记录: |