通过SQL Server中的SQL将数据库名称分配给变量

时间:2018-05-16 06:26:07

标签: sql-server sql-server-2014

我想将数据库名称分配给声明的变量,这就是我已经尝试过的方法:

DECLARE @DBname VARCHAR(100)

SET @DBname = 'PatientTurningSystem'

SELECT TABLE_NAME, TABLE_TYPE
FROM @DBname.INFORMATION_SCHEMA.TABLES


但我收到以下错误:

  

Msg 102,Level 15,State 1,Procedure SP_TableDeatails,Line 8
  '附近的语法不正确。'

3 个答案:

答案 0 :(得分:3)

您可以尝试以下查询

DECLARE @DBname VARCHAR(MAX)
DECLARE @SQL VARCHAR(MAX)

SET @DBname = 'PatientTurningSystem'

SET @SQL = 'SELECT TABLE_NAME, TABLE_TYPE
FROM ' +@DBname+'.INFORMATION_SCHEMA.TABLES'

EXEC (@SQL)

答案 1 :(得分:0)

DECLARE @DBname VARCHAR
DECLARE @QUERY VARCHAR(255)

SET @DBname = 'PatientTurningSystem'

SET @QUERY = 'SELECT TABLE_NAME, TABLE_TYPE
FROM '+@DBname+'.INFORMATION_SCHEMA.TABLES'

EXEC @QUERY

答案 2 :(得分:0)

我可能会误解您的问题,但是我使用以下脚本来查找database_name并将其设置为变量值,以便在下游活动中使用。在这种情况下,为避免以后与语法相关的任何错误(使用AWS RDS数据库名称括起来),我在名称周围添加了“ []”。

在这种情况下,您只需要将脚本寻找的Like '%BCI%'更改为所需的值即可。

Declare @DBnameis VARCHAR(30)
Declare @DBname VARCHAR(30)
    
Set @DBnameis = (select [name] as database_name
     from sys.databases
     Where [name] Like '%BCI%')
    
Select @DBnameis
    
Set @DBname = '['+@DBnameis+']'