【发布时间】: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