【问题标题】:How to Set value dynamically in setvar variable SQL如何在 setvar 变量 SQL 中动态设置值
【发布时间】:2019-04-08 15:03:23
【问题描述】:

我正在使用 SQLCMD 模式。我想设置 setvar 变量值。 我应该如何在 :setvar 中设置值? 我的代码如下所示:

DECLARE @DatabaseName AS nvarchar(180)
set @DatabaseName = '$(dbName)'    
print @DatabaseName     
:setvar DatabaseName @DatabaseName 

【问题讨论】:

    标签: sql sql-server sqlcmd


    【解决方案1】:

    请参阅以下文档 https://docs.microsoft.com/en-us/sql/relational-databases/scripting/sqlcmd-use-with-scripting-variables?view=sql-server-2017

    上面的代码和下面的代码

    sqlcmd
    :setvar  MYDATABASE AdventureWorks2012
    USE $(MYDATABASE);
    GO
    

    所以基于上面你的代码应该可以正常工作...

    【讨论】:

    • 我需要动态设置值。 “AdventureWorks2012”是静态的。我在运行时设置的值。
    【解决方案2】:

    要获取当前使用的数据库,请使用以下代码:

    DECLARE @DatabaseName AS nvarchar(180)
    SELECT @DatabaseName = DB_NAME()
    
    
    print @DatabaseName     
    :setvar DatabaseName @DatabaseName 
    

    【讨论】:

    • 用同样的方法试过了,但没有成功。
    • 你能提供任何细节是什么不工作,你以后如何使用这个变量?
    • 如果在脚本末尾加上这个语句,:!!echo $(DatabaseName),你会设置$(DatabaseName)设置为@DatabaseName(不是数据库的实际名称) )。
    猜你喜欢
    • 2020-06-15
    • 2011-10-28
    • 2021-12-02
    • 2017-01-12
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 2014-08-16
    • 2013-05-15
    相关资源
    最近更新 更多