忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

SQL-Serverのプロシージャ生成のバッチ実行
前回のSQL-Serverの関数およびプロシージャの生成のバッチファイルでの実行方法の忘備録です。

ホストがローカルホストでインスタンス名が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

コメント

コメントを書く