MSDE FunClub | 最終更新日 : 2000/08/11 | |
Microsoft Data Engine FunClub |
|
|
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