sql use statement with variable

dynamic-sql, sql-server, sql-server-2005, t-sql

Solution

The problem with the former is that what you're doing is `USE 'myDB'` rather than `USE myDB`. you're passing a string; but USE is looking for an explicit reference.

The latter example works for me.

DECLARE @sql varchar(20)
SELECT @sql = 'USE myDb'
EXEC sp_sqlexec @Sql

-- Also works
SELECT @sql = 'USE [myDb]'
EXEC sp_sqlexec @Sql

Problem

I'm trying to switch the current database with a SQL statement. I have tried the following, but all attempts failed: ``` -- 1 USE @DatabaseName ``` ``` -- 2 EXEC sp_sqlexec @Sql -- where @Sql = 'USE [' + @DatabaseName + ']' ``` To add a little more detail. EDIT: I would like to perform several things on two separate database, where both are configured with a variable. Something like this: ``` USE Database1 SELECT * FROM Table1 USE Database2 SELECT * FROM Table2 ```

Original source