前回のSQL-Serverの関数およびプロシージャの生成のバッチファイルでの実行方法の忘備録です。
ホストがローカルホストでインスタンス名がSQLEXPRESSでwindows認証の場合、 以下のコマンドを記述したバッチをサーバー上で実行します。
「test.bat」
「-i」:入力ファイルの指定
(この例ではバッチファイルとSQLファイルは同じフォルダに在ります。)
バッチの実行結果です。
尚、関数・プロシージャとも内容の変更が有った場合を想定して、DROP命令で最初に削除しています。
=====
2012/06/13:の時の情報
ホストがローカルホストでインスタンス名がSQLEXPRESSでwindows認証の場合、 以下のコマンドを記述したバッチをサーバー上で実行します。
「test.bat」
sqlcmd -S .\SQLEXPRESS -i ProcTest.sql sqlcmd -S .\SQLEXPRESS -i FuncTest.sql「-S」:サーバーの接続先
「-i」:入力ファイルの指定
(この例ではバッチファイルとSQLファイルは同じフォルダに在ります。)
バッチの実行結果です。
C:\test>sqlcmd -S .\SQLEXPRESS -i ProcTest.sql データベース コンテキストが 'TEST' に変更されました。 C:\test>sqlcmd -S .\SQLEXPRESS -i FuncTest.sql データベース コンテキストが 'TEST' に変更されました。「ProcTest.sql」
USE [TEST]
GO
IF OBJECT_ID('dbo.ProcTest') IS NOT NULL
DROP PROCEDURE [dbo].[ProcTest]
GO
-----------------------------------------
-- 階乗を計算する(プロシージャ)
-----------------------------------------
CREATE PROCEDURE [dbo].[ProcTest]
@SrcNumber DECIMAL --引数
,@DesNumber DECIMAL OUTPUT --戻り値
AS
BEGIN
SET @DesNumber = 1
WHILE @SrcNumber > 0
BEGIN
SET @DesNumber = @DesNumber * @SrcNumber
SET @SrcNumber = @SrcNumber - 1
END
END
「FuncTest.sql」
USE [TEST]
GO
IF OBJECT_ID('dbo.FuncTest') IS NOT NULL
DROP FUNCTION [dbo].[FuncTest]
GO
-----------------------------------------
-- 階乗を計算する(関数)
-----------------------------------------
CREATE FUNCTION [dbo].[FuncTest](
@SrcNumber DECIMAL --引数
)
RETURNS DECIMAL
BEGIN
DECLARE @DesNumber DECIMAL
SET @DesNumber = 1
WHILE @SrcNumber > 0
BEGIN
SET @DesNumber = @DesNumber * @SrcNumber
SET @SrcNumber = @SrcNumber - 1
END
RETURN @DesNumber
END
データベース名を「TEST」として実行しています。尚、関数・プロシージャとも内容の変更が有った場合を想定して、DROP命令で最初に削除しています。
=====
2012/06/13:の時の情報
PR
コメント