SQL Server does not accept a USE statement with a variable.
To use database names dynamically, you need to create dynamic SQL statements with (almost) fully qualified names as follows:
Declare @SQL VarChar (100) SET @SQL = 'SELECT * FROM ' + @DatabaseName + '.dbo.TableName'
and then you execute it with sp_SQLExec
source share