使用存储过程在SQL Server中动态更改数据库
我有一个关于SQL Server的问题:如何动态更改数据库名称,并使用一个select和insert statment来使用存储过程加载数据。
如何使用insert和select语句更改数据库名称,同时将表数据加载到另一个表中?
这里将每个数据库名称相关表加载到与数据库名称相关的目标表中。
即数据库:测试和源表:emp目标表是:emptarget这里emp表记录加载到类似于另一个数据库的emptarget
数据库名称信息维护一个表。
USE [test]
GO
CREATE TABLE [dbo].[databaseinformation]
(
[id] [int] NULL,
[databasename] [varchar](50) NULL
) ON [PRIMARY]
GO
INSERT [dbo].[databaseinformation] ([id], [databasename])
VALUES (1, N'test'), (2, N'test1')
GO
表1:source:emp和datbasename:test
USE [test]
CREATE TABLE [dbo].[emp]
(
[id] [int] NULL,
[name] [varchar](50) NULL,
[sal] [int] NULL
)
INSERT [dbo].[emp] ([id], [name], [sal])
VALUES (19, N'hd', 40), (1, N'g', 10),
(9, N'dk', 90), (80, N'dhe', 80)
GO
目标表:emptarget和databasename:test
USE [test]
CREATE TABLE [dbo].[emptarget]
(
[id] [int] NULL,
[name] [varchar](50) NULL,
[sal] [int] NULL
)
----table 2: emp and databasename: test1
USE [test]
CREATE TABLE [dbo].[emp]
(
[id] [int] NULL,
[name] [varchar](50) NULL,
[sal] [int] NULL
)
INSERT [dbo].[emp] ([id], [name], [sal])
VALUES (50, N'kl', 80), 39, N'abc', 10)
go
目标表:emptarget和databasename:test1
USE [test1]
CREATE TABLE [dbo].[emptarget]
(
[id] [int] NULL,
[name] [varchar](50) NULL,
[sal] [int] NULL
)
最后需要加载下面的数据
数据库:测试和表:emptarget
id |name |sal
19 |hd |40
1 |g |10
9 |dk |90
80 |dhe |80
数据库:test1和表:emptarget
id |name |sal
50 |kl |80
39 |abc |10
我尝试下面
USE [test]
GO
insert into emptarget
select * from emp
USE [test1]
GO
insert into emptarget
select * from emp
这里我不想单独运行两个查询。 我需要使用单选和插入语句来运行查询以加载数据库的数据对应表。
请告诉我如何编写查询以在SQL Server中完成此任务
其实我不知道你为什么不这样做。
insert into test.emptarget select * from test.emp;
insert into test1.emptarget select * from test1.emp;
所以我想你只是想要一个查询来做到这一点。
create procedure emptoemptarget (@DBName nvarchar(10))
as
begin
declare @sql nvarchar(1000)
set @sql = 'insert into ' + @DBName + '.emptarget select * from ' + @DBName + '.emp'
exec (@sql)
end
select dbo.emptoemptarget(name) from sys.databases where name in ('test','test1')
链接地址: http://www.djcxy.com/p/95695.html
上一篇: Change database dynamically in SQL Server using a stored procedure
下一篇: How to save single quote with different languages in sql server