質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

3回答

28010閲覧

sqlファイルに変数を渡す

evilscope

総合スコア16

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2018/07/02 00:40

##実現したいこと
バッチファイルで読んできた結果をsqlファイルを実行してデータベースに登録する

##現状
バッチファイルでログファイルの結果を変数に収めることはできています。
また、sqlファイルを連続起動し、接続、テーブル指定まではできています。

INSERT文を実行しデータベースに収めようとするとエラーが出てしまいます。

sql

1use [テーブル名]; 2go 3INSERT INTO test_01 (結果) 4values ("%ReadDec%")
メッセージ 8152、レベル 16、状態 14、サーバー [サーバー名]、行 4 文字列データまたはバイナリ データが切り捨てられます。 ステートメントは終了されました。

[結果]のデータ型はvarchar(5)となっています
バッチファイル内では[%ReadDec%]の中身は[PASS]になっています。

sqlは全くの初心者なので、足りない情報等ありましたらご指摘お願いいたします。

最終目標は[%ReadDec%]にバッチファイルで取得した結果を渡したいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

dos

1%sqlcmd% ./sql/%sqlFile% -v ReadDec=%ReadDec%

sql

1use [テーブル名]; 2go 3INSERT INTO test_01 (結果) 4values ('$(ReadDec)')

としたところ変数を渡すことができました。

投稿2018/07/02 01:42

evilscope

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

手元にSQLServer環境がないので試せないですが、ファイルに引数を渡す形ではいかがでしょうか。
参考:【SQL Server】sqlcmdで実行するsqlファイルに引数を渡す方法

投稿2018/07/02 00:47

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

evilscope

2018/07/02 01:36

ありがとうございます。 URLのサンプルを参考にしたところ無事変数を渡すことができました。 本当に助かりました。
m.ts10806

2018/07/02 01:42

似たようなことを昔やったことがあってやり方までは覚えてなかったので その昔の記憶を頼りに検索してみました。 解決の糸口になったようで何よりです。
guest

0

ダブルコートのあたりが怪しいんですが、普通にecho"%ReadDec%"これ書いて、想定通りの出力されます??
なおSQLServerで引数として文字列を与える場合はシングルコートなので、そもそも間違えている可能性もあります。
※ダブルコートをシングルコートに直せば直る気がする

投稿2018/07/02 01:22

編集2018/07/02 01:25
ShikaTech

総合スコア468

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

evilscope

2018/07/02 01:37

シングルコートじゃないと駄目だったんですね… ですが、シングルコートに変更しただけでは変わりがありませんでした。
ShikaTech

2018/07/02 01:39

だとしたら単純にバッチに引数を与える処理に失敗していたってことですね! 別回答で解決したようで何よりです!
m.ts10806

2018/07/02 01:41

ダブルクォートも含めて変数の一部だと思っていたので問題視していませんでした; 色々な観点がありますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問