バッチファイルから
・sqlcmd(SELECT文)を実行して
・結果を変数に格納
する方法を紹介します!
ここでは例として、1レコードの
・1つのカラムの値を変数に格納
・複数のカラムの値を変数に格納
する方法を記載します!
1つのカラムの値を変数に格納
ここでは例として、
・テーブル「employee」にある
・カラム「id」が「00001」のレコードの
・カラム「name」の値を取得して変数へ格納
します。
具体的にはバッチファイルから以下のSELECT文を実行し、結果を変数へ格納します。
SELECT name FROM employee WHERE id ='00001'
@echo off
REM #####################
REM ★接続情報
REM #####################
REM サーバー名(サーバーのPC名\インスタンス名)
set dbServer=localhost\SQLEXPRESS
REM データベース名
set dbName=sampleDB
REM WHERE句に指定する値 ※1レコードになるよう主キーを指定
set id=00001
REM 実行するsqlcmd(SELECT文)を組み立て ※1レコードの1つのカラム(name)を取得
set sqlcmd=sqlcmd -S %dbServer% -d %dbName% -E -W -Q "SET NOCOUNT ON; SELECT name FROM employee WHERE id = %id%"
REM SELECT文(sqlcmd)を実行し結果を変数「name」へ格納
for /f %%i in ('%sqlcmd%') do set name=%%i
REM 変数「name」の値を確認
echo 名前 : %name%
echo:
pause
exit
上記を実行すると
・1つのカラムの値を
・変数に格納
できたことを確認できます。
複数のカラムの値を変数に格納
ここでは例として、
・テーブル「employee」にある
・カラム「id」が「00001」のレコードの
・カラム「name」,「sex」,「section」の値を取得して変数へ格納
します。
具体的にはバッチファイルから以下のSELECT文を実行し、結果を変数へ格納します。
SELECT name,sex,section FROM employee WHERE id ='00001'
@echo off
REM #####################
REM ★接続情報
REM #####################
REM サーバー名(サーバーのPC名\インスタンス名)
set dbServer=localhost\SQLEXPRESS
REM データベース名
set dbName=sampleDB
REM WHERE句に指定する値 ※1レコードになるよう主キーを指定
set id=00001
REM 実行するsqlcmd(SELECT文)を組み立て ※複数のカラム(name、sex、section)を取得
set sqlcmd=sqlcmd -S %dbServer% -d %dbName% -E -W -Q "SET NOCOUNT ON; SELECT name, sex, section FROM employee WHERE id = %id%"
REM SELECT文(sqlcmd)を実行し結果を各変数へ格納
for /f "tokens=1-3" %%i in ('%sqlcmd%') do (
set name=%%i
set sex=%%j
set section=%%k
)
REM 各変数の設定値を確認
echo 名前 : %name%
echo 性別 : %sex%
echo 課 : %section%
echo:
pause
exit
上記を実行すると
・複数のカラムの値を
・変数に格納
できたことを確認できます。