2017-05-04 16 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)')