当我为脚本运行Sqlcmd: Error: Syntax error at line 2 near command '1'
时出现此错误sqlcmd
。当我查看脚本时,我发现了
INSERT INTO ABC.TableA(Name, Descr) VALUES ('Payment', N'$(162.66)')
因此,当我在线查看时,某些变量类似于$(xxxx)
的sqlcmd。
我该如何解决这个问题?我正在使用Microsoft SQL。
谢谢。
答案 0 :(得分:2)
没有逃脱角色,是的,这是愚蠢的。如果您没有使用变量开头,请使用-x
选项关闭变量替换,或者拆分表达式以使其不再作为变量替换进行解析:
INSERT INTO ABC.TableA(Name, Descr) VALUES ('Payment', N'$' + N'(162.66)')
在必要时,请注意结果仍然是正确的类型。
在极少数情况下,即使这是不可能的(因为需要字符串文字并且不允许使用表达式),您必须加入它们而不是敲打它们,并将变量设置为所需的值:
:setvar descr $(1.2)
INSERT INTO ABC.TableA(Name, Descr) VALUES ('Payment', N'$(descr)')
显然这引起了头痛,所以幸运的是,对文字的要求很少。如果你需要多次这样做,那么你最好只使用一个$
本身的变量:
:setvar dollar $
INSERT INTO ABC.TableA(Name, Descr) VALUES ('Payment', N'$(dollar)(1.2)')