日期:2014-05-18  浏览次数:20378 次

怎样使用参数代替数据库名字
使用环境 SQL SERVER 2005

测试代码 
  declare @DataBaseName nvarchar(20);
  SET @DataBaseName='RH'

  SELECT *
  FROM @DataBaseName+'.dbo.INVMB'

错误提示:
Incorrect syntax near '+'.

因为经常需要使用不同的数据库,所以想在存储过程中
 EXEC ‘RH’ 或 EXEC ‘LOOS’ 直接修改数据库就很简单了  
请问该怎样修改才能实现

 

------解决方案--------------------
declare @DataBaseName nvarchar(20);
SET @DataBaseName='RH'

exec('SELECT * FROM ' + @DataBaseName + '.dbo.INVMB')

当数据库名,表名,列名为变量时,需要拼接SQL,动态执行之.
------解决方案--------------------
SQL code

  declare @DataBaseName nvarchar(20),@sql varchar(2000)
  SET @DataBaseName='RH'

 set @sql='SELECT * FROM '+@DataBaseName+'.dbo.INVMB'
 print @sql  ---SELECT * FROM RH.dbo.INVMB

------解决方案--------------------
exec(‘SELECT *
FROM ’+@DataBaseName+'+'.dbo.INVMB')