*

【コマンドプロンプト】完成版!cmdでSQLの結果を変数に取得

以前、

【コマンドプロンプト】cmdでSQLの結果を変数に取得する方法

を書きましたが、コレの完成版です。

前回のでは、ERRORLEVELに取得するというちょっと強引な方法でしたが、今回はしっかりと変数にセットできます。まぁ件数とかだけなら前回の方法でも十分ですが。。

8行目 :サーバー名
10行目:データベース名
12行目:結果を取得したいSQL
35行目:FORの「tokens」をSQLで取得するカラム数にあわせる
39行目:CALLの引数を取得カラム数分指定する

46行目以降が取得した結果に対して、実行したい処理を記述(サンプルでは、echoで表示)

 

@echo off

REM #################################################
REM 変数セット
REM #################################################

REM サーバー名
SET SERVER=【サーバー名】
REM データベース名
SET DATABASE=【データベース名】
REM 実行SQL
SET SQL=SELECT TOP 3 [商品番号]^
                    ,[商品名]^
                    ,[区分番号]^
                    ,[価格],[原価]^
                    ,[商品写真]^
                    ,[販売開始日]^
                    ,[販売終了日]^
                    ,[更新日] ^
        FROM [db_Sales].[Product].[商品]

REM 行数カウント用
SET /A ROWCNT=0

REM sqlcmdコマンドの作成
SET SQLCMD=sqlcmd -S %SERVER% -E -d %DATABASE% -h -1 -s "," -Q "EXIT(set nocount on;%SQL%)"

REM #################################################
REM FOR文を使って、SQL結果1行ずつ取得
REM #################################################

REM SQLを実行し、カラムを取得する
REM ※SQLで取得するカラム数分の「tokens」を指定
FOR /F "usebackq delims=, tokens=1,2,3,4,5,6,7,8,9" %%i IN (`%SQLCMD%`) DO (

REM 1行ずつ処理する為、CALLで呼び出し(カラム数分を引数として渡す)
REM ※取得したカラムにスペースがあるときは、「"」で囲んで渡さないと引数が分割される
CALL :PROCESSING %%i %%j %%k %%l %%m %%n %%o %%p %%q
)

pause
exit

:PROCESSING
REM #################################################
REM 処理を記載
REM #################################################

REM 引数から取得
SET COL1=%1
SET COL2=%2
SET COL3=%3
SET COL4=%4
SET COL5=%5
SET COL6=%6
SET COL7=%7
SET COL8=%8
SET COL9=%9

REM 行数カウント
SET /A ROWCNT=%ROWCNT%+1

REM 1行づつ画面に出力
echo ========================
echo %ROWCNT%行目
echo ========================
echo カラム1:%COL1%
echo カラム2:%COL2%
echo カラム3:%COL3%
echo カラム4:%COL4%
echo カラム5:%COL5%
echo カラム6:%COL6%
echo カラム7:%COL7%
echo カラム8:%COL8%
echo カラム9:%COL9%
echo.

実行した結果が↓

SQLの結果を変数に取得。実行結果

 

Adsense

関連記事

データベース

【Management Studio】Microsoft SQL Server 2012 ExpressにManagement Studio のインストール方法。

前回、Windows Server 2012にSQL Server 2012 Expressをインス

記事を読む

データベース

【Management Studio】テーブル単位のメモリ使用量の確認

1.Management Studioを起動し、メモリ使用量が確認したい対象サーバーへ接続 2.確

記事を読む

データベース

【SQL Server 2012】Management Studioでサンプルデータベース(mdfファイル)をアタッチ

以前、Windows Server 2012にMicrosoftR SQL ServerR 2012

記事を読む

データベース

【SQL Server 2012】バックアップ/リストア方法 バックアップ編

Management StudioでSQL Server 2012のデータベースバックアップファイル

記事を読む

データベース

【SQL Server】エクセルをテーブルに取り込む方法

以前にManagement Studioを使ってSQLでエクセルを直接取り込む方法を書きましたが、今

記事を読む

コマンドプロンプト

【コマンドプロンプト】バッチでセクション付のINIファイルの読み込み

バッチファイルでINIファイルから値を読み込む 1.INIファイルの用意 以下の「バッチファイル

記事を読む

データベース

【SQL Server】バックアップ取得日を確認する方法

前回の記事で、SQL Serverのデータベースのリストアした日付を確認するSQLを作りましたが、今

記事を読む

データベース

【ODBC】Access2007でSQL Server 2012に接続する為のサーバー側の設定

ODBCでAccess2007からSQL Server 2012へ接続する為には SQL Serv

記事を読む

コマンドプロンプト

【コマンドプロンプト】前日日付、月末日付を変数に取得するバッチ。うるう年対応

コマンドプロンプトを使って前日、指定日、月末日付を変数に取得する。 「SearchDay」に入

記事を読む

データベース

【ODBC】Windows7でAccess2007とSQL Serverを接続する為のODBCの作成

前回、ODBC接続の為のサーバー側の設定を行いましたので、 今回はAccess2007側のWind

記事を読む

Adsense

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Adsense

Microsoft Office
【Access】削除クエリの「指定されたテーブルから削除できませんでした。」の対処法

削除クエリで「指定されたテーブルから削除できませんでした。」と ポッ

Microsoft Office
【PowerPoint】表や図形、画像オブジェクトの位置をピッタリ合わせる方法

パワーポイントで、図形や画像等のオブジェクトの細かい位置調整は、 完

データベース
【SQL Server】Excel VBAのレコードセットを使ってテーブルの一括更新

前々回は読み取り専用でレコードセットへ取得し、結果をエクセルへ書き出し

application
【Visual Studio】デバック、ブレークポイントで止まらない。

Visual Studio 2015でVB.netのプログラムをデバッ

データベース
【SQL Server】Excel VBAでSELECT文を実行してレコードセットへ取得

前回は、テーブルのレコードをVBAで直接更新(Insert/updat

→もっと見る

PAGE TOP ↑