문제

Is it possible to do something like this:

DECLARE @SourceDB VARCHAR(100);
SET @SourceDB = [DatabaseName]


INSERT INTO CompletedScope
( uidInstanceID ,
  completedScopeID ,
  state ,
  modified
)
SELECT uidInstanceID ,
       completedScopeID ,
       state ,
       modified
FROM SourceDB.[dbo].CompletedScope;

Basically use the declared SourceDB variable in the query.

도움이 되었습니까?

해결책

You will need to use Dynamic sql for this ...

DECLARE @SourceDB NVARCHAR(128), @Sql NVARCHAR(MAX);
SET @SourceDB = 'DatabaseName';


SET @Sql = N'INSERT INTO CompletedScope
                    ( uidInstanceID ,
                      completedScopeID ,
                      state ,
                      modified
                    )
            SELECT uidInstanceID ,
                   completedScopeID ,
                   state ,
                   modified
            FROM ' + QUOTENAME(@SourceDB) + '.[dbo].CompletedScope;'

EXECUTE sp_executesql @Sql

Use QUOTENAME() function when concatenating variables to your sql , protects you against Sql Injection attacks.

다른 팁

You can use a dynamic query

SELECT @sql=
'INSERT INTO CompletedScope
        ( uidInstanceID ,
          completedScopeID ,
          state ,
          modified
        )
SELECT uidInstanceID ,
       completedScopeID ,
       state ,
       modified
FROM ' + @SourceDB + '.[dbo].CompletedScope;'

EXEC sp_executesql @sql
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top