| MSDE FunClub |
|
最終更新日 : 2000/08/11 |
|
Microsoft Data Engine FunClub
|
Since 2000.08.11
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(上巻) |
|
【第4章268p 〜 270p掲載】 |
-- [SQL04_02.SQL]
-- SQLServer7.0 Transact-SQL言語
-- 日本技術ソフト開発 堀川 明
-- http://www.horikawa.ne.jp/msde/
--
-- このSQLプログラムは、
-- パラメータ付きストアドプロシージャの呼び出し方を勉強します
-- AccessのNorthwindデータベースの[社員]テーブルをSQLServer
-- へエクスポートしてください
--
-- カレントデータベースを MySampleTest にする
USE MySampleTest
GO
-- (何件処理しました のメッセージを抑制する
SET NOCOUNT ON
GO
-- [社員]テーブルの存在チェック
IF( ( object_id('社員') IS NULL ) OR
OBJECTPROPERTY( object_id('社員') , 'IsTable' ) = 0 )
BEGIN
PRINT '****Error!!****'
PRINT 'AccessのNorthwindデータベースの[社員]テーブルを使います'
PRINT '[社員]テーブルを転送してください'
RAISERROR( '[社員]テーブルが見つかりません',16,127)
RETURN
END
GO
-- すでに同じ名前のストアドプロシージャが登録済みのときは、削除する
IF EXISTS (SELECT name FROM sysobjects
WHERE name = '社員検索' AND type = 'P ')
BEGIN
DROP PROC 社員検索
END
IF EXISTS (SELECT name FROM sysobjects
WHERE name = '改行出力' AND type = 'P ')
BEGIN
DROP PROC 改行出力
END
GO
-- *******************
-- 社員検索の登録
-- *******************
CREATE PROCEDURE 社員検索
@IdStart int = 0 , -- デフォルト値の定義
@IdEnd int = 999
AS
-- 検索結果の結果セットを返します
SELECT
CAST(社員.社員コード AS char(4) ) AS 社員コード,
CAST(社員.フリガナ AS char(20) ) AS フリガナ,
CAST(社員.氏名 AS char(20) ) AS 氏名
FROM 社員
WHERE 社員.社員コード Between @IdStart AND @IdEnd
GO
-- *******************
-- 改行出力の登録
-- *******************
CREATE PROCEDURE 改行出力
@LineCount int = 2 -- デフォルト値の定義
AS
DECLARE @tmp int
SELECT @tmp = 0
-- LineCount行数分の出力
WHILE @tmp < @LineCount
BEGIN
PRINT ''
SELECT @tmp = @tmp + 1
END
GO
-- ****************************
-- ストアドプロシージャの実行
-- ****************************
-- 【例1】パラメータを省略して実行します
EXEC 社員検索
PRINT 'パラメータ無しで社員検索を実行しました'
EXEC 改行出力 @LineCount = 5
GO
-- 【例2】パラメータ付き、実行します
EXEC 社員検索 @IdStart= 300
PRINT '300 から 999 番までの社員検索表示です'
EXEC 改行出力
GO
-- 【例3】パラメータ付き、実行します
EXEC 社員検索 @IdEnd=299
PRINT '000 から 299 番までの社員検索表示です'
EXEC 改行出力
GO
-- 【例4】パラメータ付き、実行します
EXEC 社員検索 @IdStart=200 , @IdEnd=299
PRINT '200 から 299 番までの社員検索表示です'
EXEC 改行出力
GO