| MSDE FunClub |
|
最終更新日 : 2000/08/11 |
|
Microsoft Data Engine FunClub
|
Since 2000.08.11
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(上巻) |
|
【第4章305p 〜 307p掲載】 |
-- [SQL04_13.SQL]
-- SQLServer7.0 Transact-SQL言語
-- 日本技術ソフト開発 堀川 明
-- http://www.horikawa.ne.jp/msde/
--
-- このSQLプログラムは、ストアドプロシージャのグループ化
-- の例題です
--
-- カレントデータベースを MySampleTest にする
USE MySampleTest
GO
-- ( 件処理されました)のメッセージを抑止する
SET NOCOUNT ON
GO
-- すでに同じ名前のストアドプロシージャが登録済みのときは、削除する
-- グループ全体を一括削除する
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'ProcGroup' AND type = 'P ')
BEGIN
DROP PROC ProcGroup
END
GO
-- ストアドプロシージャを登録します(1番)
CREATE PROCEDURE ProcGroup;1
@InOut_int int OUTPUT ,
@InOut_str varchar(80) OUTPUT
AS
PRINT '入力された値 InOut_int = ' + LTRIM(STR(@InOut_int))
PRINT '入力された値 InOut_str = ' + @InOut_str
-- 引数の値を書き換えます
SELECT @InOut_int = @InOut_int * 2
SELECT @InOut_str = @InOut_str + @InOut_str
RETURN
GO
-- ストアドプロシージャを登録します(2番)
CREATE PROCEDURE ProcGroup;2
@int_data int ,
@str_data varchar(160)
AS
-- 変数の値の出力
PRINT '呼び出し後の値 int_data = ' + LTRIM(STR(@int_data))
PRINT '呼び出し後の値 str_data = ' + @str_data
GO
-- ストアドプロシージャを登録します(3番)
CREATE PROCEDURE ProcGroup;3
@LineCount int = 2
AS
DECLARE @tmp int
SELECT @tmp = 0
-- LineCount行数分の出力
WHILE @tmp < @LineCount
BEGIN
PRINT ''
SELECT @tmp = @tmp + 1
END
GO
-- ***********************
-- グループ化の例題
-- ***********************
DECLARE @int_data int , @str_data varchar(160)
-- 初期値を設定します
SELECT @int_data = 100 ,
@str_data = 'SQLServer 7.0 ストアドプログラミング:'
-- ストアドプロシージャを呼び出します
EXEC ProcGroup;1 @int_data , @str_data
EXEC ProcGroup;2 @int_data , @str_data
PRINT '呼び出し時に OUTPUT キーワードを忘れました。結果は?'
EXEC ProcGroup;3
-- ストアドプロシージャを呼び出します
EXEC ProcGroup;1 @int_data OUTPUT , @str_data OUTPUT
EXEC ProcGroup;2 @int_data , @str_data
PRINT '呼び出し時に OUTPUT キーワードを付けました。結果は?'
EXEC ProcGroup;3
GO