2017-05-04 7 views
0

sqlcmd을 스크립트로 실행하면 Sqlcmd: Error: Syntax error at line 2 near command '1'이 발생합니다. 내가 스크립트를 검사 할 때 나는 온라인으로 확인할 때

INSERT INTO ABC.TableA(Name, Descr) VALUES ('Payment', N'$(162.66)') 

그래서, 몇 가지 변수 SQLCMD에 대한 $(xxxx) 같은 것을 발견했다. 어떻게 문제를 해결할 수 있습니까? Microsoft SQL을 사용하고 있습니다. 감사합니다.

+1

를 시도? $는 sqlcmd –

+0

@ KannanKandasamy를 실행하는 동안 변수 대체로 간주되므로 답변 해 주셔서 감사합니다. sqlcmd의 이스케이프 문자를 찾으려고 시도했지만이 링크는 http://www.robvanderwoude.com/escapechars.php에 있지만 $는 목록에 없습니다. – kevin

답변

1

이스케이프 문자가 없으며 예, 이것은 바보입니다. 어느 쪽이든 당신이로 시작하는 변수를 사용하지 않는 경우 -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)')