【SQL Server】バッチファイルからストプロを実行する

バッチファイルから
 ・ストプロを実行
できます!

PR

サンプルプログラムの概要

バッチファイルから
 ・ストプロ「SampleProcedure」を実行(引数あり)
します。

PR

ストプロを作成

ここでは例として、
 ・引数として文字列をもらって
 ・テーブル「tableA」へレコードをINSERTするストプロ「SampleProcedure」
を作成します。

テーブル「tableA」
テーブル「tableA」
--DB名を設定
USE [sampleDB]
GO

CREATE OR ALTER PROCEDURE SampleProcedure
	--引数
	@message VARCHAR(50)
AS
	--tableAへレコードをINSERT
	INSERT INTO tableA VALUES(@message,GETDATE())
	RETURN
GO
PR

バッチファイルを作成

ここでは例として、
 ・上記で作成したストプロ「SampleProcedure」を実行
します。

@echo off

REM #####################
REM ★接続情報
REM #####################
REM サーバー名(サーバーのPC名\インスタンス名)
set dbServer=localhost\SQLEXPRESS
REM データベース名
set dbName=sampleDB
REM ユーザー名
REM set userName=XXXXX
REM パスワード
REM set password=XXXXX
REM ストプロ名
set procedureName=dbo.SampleProcedure
REM 引数
set arg=バッチファイルからストプロ実行

REM #####################
REM Windows認証の場合
REM #####################
REM ★ストプロを直接実行
sqlcmd -S %dbServer% -d %dbName% -E -Q "EXIT(DECLARE @return_value int EXEC @return_value = %procedureName% '%arg%' SELECT @return_value)" > null

REM #####################
REM SQL Server認証の場合
REM #####################
REM ★ストプロを直接実行
REM sqlcmd -S %dbServer% -d %dbName% -U %userName% -P %password% -Q "EXIT(DECLARE @return_value int EXEC @return_value = %procedureName% '%arg%' SELECT @return_value)" > null

echo.

rem 実行結果を確認
if %errorlevel% == 0 (
	echo 正常終了しました。戻り値:%errorlevel%
) else (
	echo 異常終了しました。戻り値:%errorlevel%
)

echo.

pause

以下を定数として設定しています(8~17行目)。
・接続情報
・ストプロ名
・引数
※必要に応じて、環境に合うよう変更してください。

ストプロを実行しています(23、30行目)。
※30行目はコメントアウトしています。

PR

実行結果

バッチファイルからストプロを実行できました。

実行結果①
実行結果①
実行結果②
実行結果②
PR

参考

VBAからストプロを実行することもできます。

詳細は以下の記事をご確認ください。

タイトルとURLをコピーしました