バッチファイルから
・ストプロを実行
できます!
サンプルプログラムの概要
バッチファイルから
・ストプロ「SampleProcedure」を実行(引数あり)
します。
ストプロを作成
ここでは例として、
・引数として文字列をもらって
・テーブル「tableA」へレコードをINSERTするストプロ「SampleProcedure」
を作成します。
--DB名を設定
USE [sampleDB]
GO
CREATE OR ALTER PROCEDURE SampleProcedure
--引数
@message VARCHAR(50)
AS
--tableAへレコードをINSERT
INSERT INTO tableA VALUES(@message,GETDATE())
RETURN
GO
バッチファイルを作成
ここでは例として、
・上記で作成したストプロ「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
実行結果
バッチファイルからストプロを実行できました。
参考
VBAからストプロを実行することもできます。
詳細は以下の記事をご確認ください。