在 SQL 服务器中通过 SQL 将数据库名称分配给变量

Assign a database name into the variable via SQL in SQL server

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

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
Incorrect syntax near '.'

DECLARE @DBname VARCHAR
DECLARE @QUERY VARCHAR(255)

SET @DBname = 'PatientTurningSystem'

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

EXEC @QUERY

您可以尝试以下查询

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)

我可能误解了你的问题,但我使用以下脚本查找 database_name 并将其设置为下游 activity 中使用的变量值。在这种情况下,为了避免以后出现与语法相关的任何错误(使用 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+']'