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




技術評論社の書籍ガイドへ
上巻:ISBN4-7741-0965-7

ウィンドウを閉じる


(株)日本技術ソフト開発 責任編集:堀川 明
MSDE FunClubに関するご意見・ご要望等ございましたら、 msdefun@horikawa.ne.jp までご連絡下さい。
HOME: http://www.horikawa.ne.jp/msde/


MSDE FunClubの運営は、マイクロソフト社とは一切の関係はありません