从变量检索数据库名称

时间:2019-03-11 13:55:46

标签: sql-server

我有一个简单的要求,我需要用另一个表的数据库名称替换变量。

我有一个名为config setting的表

键值

ClubcardDB ClubardDetailsDB

代码

from nltk.tokenize import word_tokenize

df = pd.DataFrame({'A': ["potato soup, 99", "2 tomato"]})

# Tokenise
df['B'] = df['A'] .apply(word_tokenize)

# Words only
def Words(Token):
    if Token .isalpha():
        return Token
df['C'] = df['B'] .apply(Words)

出现错误: 无效的对象名称'@ Value.dbo.ClubcardDetails'。

我不想构建和动态查询。

2 个答案:

答案 0 :(得分:0)

这是我在计算机上制作的一个有效示例:

Declare @Value varchar(100)='Test'
DECLARE @SQL NVARCHAR(MAX)

SET @SQL='Select * from ' + QUOTENAME(@Value) + '.[sys].[all_columns];'
EXECUTE sp_executesql @SQL

一种更安全的方法,它验证值实际上是数据库名称:

Declare @Value varchar(100)='Test'
DECLARE @SQL NVARCHAR(MAX)

SELECT @SQL='Select * from ' + QUOTENAME(name) + '.[sys].[all_columns];'
FROM master.dbo.sysdatabases
WHERE name=@Value

EXECUTE sp_executesql @SQL

答案 1 :(得分:0)

尝试使用SQLCMD Mode。在SSMS中,单击Query -> SQLCMD Mode

:setvar dbname "YourDB" 

SELECT * FROM $(dbName).dbo.YourTable

Read more about SQLCMD