作为应用程序安装程序的一部分,我需要将一些数据插入到已经存在的数据库中。数据库的结构是已知的,但是确切的名称是不知道的;也就是说,我知道需要插入的表的名称及其结构,但是db名称是可变的。
db名称的结构是:AppDB_<version#> (ex:AppDB_V20_1_2)。不幸的是,当安装此应用程序的新主要版本时,服务器上保留了以前的dbs,因此查询到:
SELECT name FROM master..sysdatabases WHERE name LIKE 'AppDB%'返回多个结果。
是否可以创建一个查询,在整个结果范围内插入相同的表?
也就是说,如果我有数据库:
AppDB_V1
AppDB_V2
AppDB_V3我是否可以编写一个有效地执行以下操作的查询:
INSERT INTO [AppDB_V1].[dbo].[TableName] ...
INSERT INTO [AppDB_V2].[dbo].[TableName] ...
INSERT INTO [AppDB_V3].[dbo].[TableName] ...事先不知道AppDB的号码或名字?
发布于 2014-01-24 17:08:40
发布于 2014-01-24 20:16:05
因此,您可以生成一个动态sql语句:
声明@sql mvarchar(max);
设置@sql =N‘;
选择@sql = @sql + N',插入到‘+商号(db.name)+N’.dbot.able 1从dbo.SourceTable;‘+ char(13);
来自sys.databases db
db.name喜欢的地方。
设置@sql = stuff(@sql,1,1,N‘);
exec (@sql);
https://stackoverflow.com/questions/21336068
复制相似问题