是否可以基于某些先前选择的查询来更改表并添加具有动态名称/数据类型的列?
我要在SQL中执行的操作的伪等效项为:
foreach row in tableA
{
alter tableB add row.name row.datatype
}
这是用于SQL Server。
答案 0 :(得分:1)
当然,您可以使用动态sql来做到这一点。
答案 1 :(得分:1)
如前所述,您可以使用动态sql执行此操作。遵循以下原则:
Declare @SQL1 nvarchar(4000)
SELECT @SQL1=N'ALTER TABLE mytable'+NCHAR(13)+NCHAR(10)
+N' ADD COLUMN '+ my_new_column_name + ' varchar(25)'+NCHAR(13)+NCHAR(10)
-- SELECT LEN(@SQL1), @SQL1
EXECUTE (@SQL1)
除了杂乱无章,容易出错,存在安全风险,需要高权限执行并且对于大于4000个字符的批处理需要多个变量这一事实之外,从设计的角度来看,这通常也是一个坏主意(取决于关于何时/为什么这样做)。