| 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