我需要将记录从数据库DBa
、表复制Tbl1
到数据库DBx
、表Tbl1
并获取Scope Identity
同一SQL Server 2005
服务器内部
我已经检查过这个: How to Dynamically change the database using TSQL
但我的问题更复杂。
我确实只想在DBx
里面执行一些事情DBa
。我想将记录从一个数据库复制到同一服务器中的其他(相同)数据库之一,并取回 scope_identity。
动态 SQL 是一个字符串。当我们还想复制其他数据类型的变量时该怎么办?
示例代码:
CREATE PROCEDURE dbo.pr_consolidation_copy_group @group_id numeric(10,0),@database_to varchar(100)
AS
DECLARE @group_name char(100),@arrival datetime,@departure datetime,@contact_id char(82)
SELECT @group_name = group_name ,
@arrival = arrival,
@departure = departure,
@contact_id = contact_id
FROM grp
WHERE group_id = @group_id
DECLARE @exec nvarchar(max) = QUOTENAME(@database_to) + N'.sys.sp_executesql',
@sql nvarchar(max) = N'INSERT grp(group_name, arrival, departure, contact_id)
SELECT @group_name, @arrival, @departure, @contact_id;SELECT SCOPE_IDENTITY()'; //How do we handle the variables?
EXEC @exec @sql;
go
将所有变量转换为字符串并将 CONVERT 放入动态 SQL 中?我希望我能找到另一个解决方案,因为我的表大约有 300 列:(
除非我弄错了,否则你的问题并没有你想象的那么复杂。据我了解,您想从当前数据库中获取一些数据,将其存储在变量中,然后将其插入另一个数据库,返回插入的 id。如果是这样,这将做你需要的:
您可以在sp_executeSql的文档中找到有关输出变量的更多信息。