MSDE FunClub 現在までのアクセスカウント数 最終更新日 : 2000/08/11
Microsoft Data Engine FunClub
Since 2000.08.11
SQLServer7.0/MSDE 完全トレーニングテキスト(上巻)
【第4章293p 〜 295p掲載】

-- [SQL04_10.SQL]
--             SQLServer7.0  Transact-SQL言語
--             日本技術ソフト開発  堀川 明
--            http://www.horikawa.ne.jp/msde/
--
-- このSQLプログラムは、ストアドプロシージャの内部で引数の値を
-- 書き換える例です
-- ストアドプロシージャの引数宣言では、OUTPUTキーワードを使います
-- ストアドプロシージャを呼び出すときもOUTPUTキーワードが必要です

-- カレントデータベースを MySampleTest にする
    USE MySampleTest
GO

-- ( 件処理されました)のメッセージを抑止する
    SET NOCOUNT ON
GO

-- ***************
--   既存の削除
-- ***************
    IF EXISTS (SELECT name FROM sysobjects
                   WHERE name = '合計計算' AND type = 'P ')  
       BEGIN
           DROP PROC  合計計算
       END
GO


-- ************************
--   [合計計算]の登録
-- ************************
    -- Sum = 1+2+3+4+ ... + End の計算を行います
    CREATE PROCEDURE 合計計算
                 @End  int  = 10 , 
                 @Sum  int OUTPUT    -- OUTPUTキーワードを忘れずに!!
AS
    DECLARE @I INT
    SELECT @Sum = 0 , 
           @I   = 1
    WHILE (@I <= @End)
       BEGIN     
          SELECT @Sum = @Sum + @I
          SELECT @I = @I + 1
       END
    RETURN @Sum
GO

-- ********************************
--        プログラムの実行
-- ********************************
    DECLARE @Total int,@Ret int
    PRINT ''
    PRINT 'OUTPUTキーワードが呼び出し元にも必要です'
    PRINT ''

    -- 呼び出し方(1)  実引数の値を順番通りに渡す     
    EXEC 合計計算 10 , @Total OUTPUT
    PRINT '1+2+3+ ... + 10  = ' + cast(@Total as varchar)

    -- 呼び出し方(2)  仮引数側の引数名を指定する    
    EXEC 合計計算 @End = 100 , @Sum = @Total OUTPUT
    PRINT '1+2+3+ ... + 100 = ' + cast(@Total as varchar)

    -- 呼び出し方(3)   仮引数側の引数名を指定するので、順番は逆でもよい    
    EXEC 合計計算 @Sum = @Total OUTPUT , @End = 100
    PRINT '1+2+3+ ... + 100 = ' + cast(@Total as varchar)

    -- 呼び出し方(4)  関数値を受け取る。仮引数側の引数名を指定する    
    EXEC @Ret = 合計計算 @End = 100 , @Sum = @Total OUTPUT
    PRINT '1+2+3+ ... + 100 = ' + cast(@Total as varchar)
    IF @Ret <> @Total PRINT '*** ERROR ***'

    -- 呼び出し方(5)   関数値を受け取る。引数@Endを省略する     
    EXEC @Ret = 合計計算 @Sum = @Total OUTPUT
    PRINT '1+2+3+ ... + 10  = ' + cast(@Total as varchar)
    IF @Ret <> @Total PRINT '*** ERROR ***'
 
GO




技術評論社の書籍ガイドへ
上巻:ISBN4-7741-0965-7

ウィンドウを閉じる


(株)日本技術ソフト開発 責任編集:堀川 明
MSDE FunClubに関するご意見・ご要望等ございましたら、 msdefun@horikawa.ne.jp までご連絡下さい。
HOME: http://www.horikawa.ne.jp/msde/


MSDE FunClubの運営は、マイクロソフト社とは一切の関係はありません