この記事では、バッチファイルからストアドプロシージャを実行する方法についてご説明します。
ストアドプロシージャの例
今回はバッチファイルから下のストアドプロシージャ「testProc」を実行します。
テーブル「tbl_test」のデータを削除するDELETE文を実行するストアドプロシージャです。
テーブル「tbl_test」には下のようにデータが存在しています。
バッチファイルを実行すると、「testProc」が実行されてテーブル「tbl_test」のデータが削除されます。
コードの例
Windows 認証の場合
Windows 認証でバッチファイルからストアドプロシージャを実行するコード(例)は下のとおりです。
@echo off sqlcmd -S (LocalDB)\MSSQLLocalDB -d CS_01 -E -Q "EXEC testProc"
①sqlcmd
sqlcmdは、コマンドラインからSQL Serverに接続し、SQLクエリを実行するためのコマンドです。
今回はストアドプロシージャを実行したいので、sqlcmdコマンドを使ってストアドプロシージャを実行します。
②-S
サーバを指定するのに必要なオプションが「-S」です。
「-S」の後ろにはサーバ名を指定します。
③(LocalDB)\MSSQLLocalDB
「(LocalDB)\MSSQLLocalDB」はサーバで、今回はローカルサーバ「(LocalDB)\MSSQLLocalDB」に接続するので、「(LocalDB)\MSSQLLocalDB」を指定しています。
④-d
データベースを指定するのに必要なオプションが「-d」です。
「-d」の後ろにはデータベース名を指定します。
⑤CS_01
「CS_01」はデータベース名で、今回はデータベース「CS_01」のストアドプロシージャを実行するので、「CS_01」を指定しています。
⑥-E
Windows認証でSQL Serverに接続する場合にこの「-E」のオプションを指定します。
今回はWindows認証でSQL Serverに接続します。
⑦-Q
SQLクエリを指定するのに必要なオプションが「-Q」です。
「-Q」の後ろにはSQLクエリを指定します。
⑧EXEC
ストアドプロシージャを実行するのに、EXECキーワードを使います。
EXECキーワードの後ろにストアドプロシージャ名を指定します。
⑨testProc
testProcは今回実行するストアドプロシージャ名です。
SQL Server 認証の場合
SQL Server 認証でバッチファイルからストアドプロシージャを実行するコード(例)は下のとおりです。
@echo off sqlcmd -S (LocalDB)\MSSQLLocalDB -d CS_01 -U test_user -P pass_str -Q "EXEC testProc"
①sqlcmd
sqlcmdは、コマンドラインからSQL Serverに接続し、SQLクエリを実行するためのコマンドです。
今回はストアドプロシージャを実行したいので、sqlcmdコマンドを使ってストアドプロシージャを実行します。
②-S
サーバを指定するのに必要なオプションが「-S」です。
「-S」の後ろにはサーバ名を指定します。
③(LocalDB)\MSSQLLocalDB
「(LocalDB)\MSSQLLocalDB」はサーバで、今回はローカルサーバ「(LocalDB)\MSSQLLocalDB」に接続するので、「(LocalDB)\MSSQLLocalDB」を指定しています。
④-d
データベースを指定するのに必要なオプションが「-d」です。
「-d」の後ろにはデータベース名を指定します。
⑤CS_01
「CS_01」はデータベース名で、今回はデータベース「CS_01」のストアドプロシージャを実行するので、「CS_01」を指定しています。
⑥-U
ユーザ名を指定するのに必要なオプションが「-U」です。
⑦test_user
「test_user」は、SQL Server認証でSQL Serverに接続する際のユーザ名です。
今回は「test_user」というユーザ名でSQL Serverに接続します。
⑧-P
パスワードの文字列を指定するのに必要なオプションが「-P」です。
⑨pass_str
「pass_str」は、SQL Server認証でSQL Serverに接続する際のパスワード名です。
今回は「pass_str」というパスワードでSQL Serverに接続します。
⑩-Q
SQLクエリを指定するのに必要なオプションが「-Q」です。
「-Q」の後ろにはSQLクエリを指定します。
⑪EXEC
ストアドプロシージャを実行するのに、EXECキーワードを使います。
EXECキーワードの後ろにストアドプロシージャ名を指定します。
⑫testProc
testProcは今回実行するストアドプロシージャ名です。
動作確認
Windows 認証の場合
バッチファイル実行前
今回はWindows 認証でログインしてストアドプロシージャを実行するバッチファイルを用意しました。
今回用意したバッチファイルが実行するストアドプロシージャは下のとおりです。
このストアドプロシージャは、テーブル「tbl_test」のデータを削除するDELETE文を実行するストアドプロシージャです。
テーブル「tbl_test」には下のようにデータが存在しています。
バッチファイル実行後
バッチファイルを実行するとコマンドプロンプトが起動し閉じます。
次に再度テーブル「tbl_test」を確認してみると、データがすべて削除されていることが分かりました。
SQL Server 認証の場合
バッチファイル実行前
今回はSQL Server 認証でログインしてストアドプロシージャを実行するバッチファイルを用意しました。
今回用意したバッチファイルが実行するストアドプロシージャは下のとおりです。
このストアドプロシージャは、テーブル「tbl_test」のデータを削除するDELETE文を実行するストアドプロシージャです。
テーブル「tbl_test」には下のようにデータが存在しています。
バッチファイル実行後
バッチファイルを実行するとコマンドプロンプトが起動し閉じます。
次に再度テーブル「tbl_test」を確認してみると、データがすべて削除されていることが分かりました。
最後に
この記事では、バッチファイルからストアドプロシージャを実行する方法についてご説明しました。
バッチファイルからストアドプロシージャを実行したい時は参考にして頂けたら幸いです。
プログラミングのスキルを習得するなら
プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。
プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。