【问题标题】:Pass parameter in create table using batch file and SQLCMD使用批处理文件和 SQLCMD 在创建表中传递参数
【发布时间】:2013-10-31 12:33:03
【问题描述】:

我必须将参数(日期)传递到将通过批处理文件触发的创建表脚本中。我用过SQLCMD,代码如下

批次

for /f "tokens=1-4 delims=/:." %%a in ("%TIME%") do (
       set hh=%%a&set nn=%%b&set ss=%%c&set ms=%%d)
echo "timeset"   
set V_TIMESTAMP=%yyyy%%mm%%dd%
echo %V_TIMESTAMP%

sqlcmd -E -S %V_SERVER% -d %V_DATABASE% -b -i %V_SQL_SCRIPT%  -v timestmp=%V_TIMESTAMP%

SQL

CREATE TABLE [dbo].[tblname_'($timestmp)'](
[PKCol1] [int] NOT NULL)

据我所见,输出应该是一个名为 tblname_20131022 的表,但我看到的是一个名为 tblname_'($timestmp)' 的表

我所做的有什么问题吗?请提出建议。

谢谢你, 维巴夫

【问题讨论】:

  • 可能是我错了,但是 %yyyy% %mm% 和 %dd% 定义/初始化在哪里?
  • 在 for 循环中。我从日期变量中提取了这些值。设置 hh=%%a&set nn=%%b&set ss=%%c&set ms=%%d
  • 没有。您从 %TIME% 变量中设置了 %hh%、%nn%、%ss% 和 %ms%。

标签: sql sql-server batch-file parameter-passing sqlcmd


【解决方案1】:

在您的 CREATE TABLE 语句中,美元符号 ($) 需要在括号之外...并去掉引号:

CREATE TABLE [dbo].[tblname_$(timestmp)](
[PKCol1] [int] NOT NULL)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多