| MSDE FunClub |
|
最終更新日 : 2000/08/11 |
|
Microsoft Data Engine FunClub
|
Since 2000.08.11
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(上巻) |
|
【第4章292p 〜 293p掲載】 |
-- [SQL04_09.SQL]
-- SQLServer7.0 Transact-SQL言語
-- 日本技術ソフト開発 堀川 明
-- http://www.horikawa.ne.jp/msde/
--
-- このSQLプログラムは、ストアドプロシージャの内部で引数の値を
-- 書き換えても呼び出し元には反映しない誤った例です
-- ストアドプロシージャの引数宣言では、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
SELECT @Total = 0
EXEC 合計計算 10 , @Total
PRINT ''
PRINT 'これはストアドプロシージャの呼び出し側で誤った例です'
PRINT '1+2+3+ ... + 10 = ' + cast(@Total as varchar)
PRINT '合計値は正しいですか?'
GO