我有一个zhm.GetBatchCmdList_sp
带有两个可选输入参数(@freq
和)的存储过程( @env
)。存储过程一一返回我要执行的 SSIS 文件和存储过程的单列列表。
我创建了一些测试代码,它们只是将存储过程的结果集回显到控制台:
set freq=D
set env=DEV
set cmd=sqlcmd -S LDNDSM05243\TDS_MAIN2_DEV -d CPRM_3DSTRESS -Q "exec zhm.GetBatchCmdList_sp @freq=$(freq), @freq=$(env)" -h -1
set cmdList=
setlocal enabledelayedexpansion
for /f "usebackq" %%i in (`"%cmd%"`) do (set cmdList=!cmdList! %%i)
for %%v in (%cmdList%) do echo %%v
endlocal
但我遇到了问题。
如果我从上面的“set cmd ....”行中删除输入参数,将其替换为:
set cmd=sqlcmd -S LDNDSM05243\TDS_MAIN2_DEV -d CPRM_3DSTRESS -Q "exec zhm.GetBatchCmdList_sp" -h -1
然后脚本运行。但是,我希望调用者能够将输入变量(即%1
和%2
)传递给脚本(脚本会将这些变量传递给存储过程),以便可以在运行时 为freq
和设置不同的值。env
我不知道我做错了什么,但我怀疑它可能与存储的 proc 输入参数的组合和启用延迟扩展有关。当然,我可能是错的,但我一直在谷歌搜索,我找不到任何特定于这个组合/问题的帮助。
任何人都可以帮助我吗?