MSDE FunClub 現在までのアクセスカウント数 最終更新日 : 2000/08/11
Microsoft Data Engine FunClub
Since 2000.08.11
SQLServer7.0/MSDE 完全トレーニングテキスト(上巻)
【第4章298p 〜 300p掲載】

-- [SQL04_11.SQL]
--             SQLServer7.0  Transact-SQL言語
--             日本技術ソフト開発  堀川 明
--            http://www.horikawa.ne.jp/msde/
--
-- このSQLプログラムは、ストアドプロシージャの名前をローカル変数名
-- に代入してストアドプロシージャを呼び出す例です

-- カレントデータベースを MySampleTest にする
    USE MySampleTest
GO

-- ( 件処理されました)のメッセージを抑止する
    SET NOCOUNT ON
GO

-- *******************************
--   一時オブジェクトの削除処理
-- *******************************
    CREATE PROCEDURE Delete_TempObject
             @objnm   sysname , 
             @type    char(2)
  AS
    DECLARE @nm  sysname
    SET NOCOUNT ON
    SELECT @nm = 'tempdb..' + @objnm

    IF( @type = 'U ' )        -- ローカル一時テーブルの削除処理
    BEGIN
            IF EXISTS (SELECT name FROM tempdb..sysobjects
                    WHERE( (id = object_id(@nm)) AND type = 'U ') )
            BEGIN
                   --PRINT 'テーブル ' + @objnm + 'を削除します'
                   EXEC( 'DROP TABLE ' + @objnm )   -- テーブル削除
            END
    END
    ELSE IF( @type = 'P ' )   -- ローカル一時ストアドプロシージャの削除
    BEGIN
            IF EXISTS (SELECT name FROM tempdb..sysobjects
                    WHERE( (id = object_id(@nm)) AND type = 'P ') )
            BEGIN
                   --PRINT 'プロシージャ' + @objnm + 'を削除します'
                   EXEC( 'DROP PROCEDURE ' + @objnm )  -- プロシージャの削除
            END
    END
GO

-- *******************************
--   既存オブジェクトを削除する
-- *******************************
    EXEC Delete_TempObject '#TMP_PROC1' , 'P '
    EXEC Delete_TempObject '#TMP_PROC2' , 'P '
    EXEC Delete_TempObject '#TMP_PROC3' , 'P '
GO


-- *******************************
--   ストアドプロシージャの登録
-- *******************************
    -- 【その1】
    CREATE PROCEDURE #TMP_PROC1
          @Param1  varchar(80) = NULL 
  AS
    RAISERROR( 'その1が実行されました(パラメータ) = %s' , 0 , 1 , @Param1 )
GO

    --【その2】
    CREATE PROCEDURE #TMP_PROC2
            @Param2  varchar(80) = NULL 
  AS
    RAISERROR( 'その2が実行されました(パラメータ) = %s' , 0 , 1 , @Param2 )
GO

    -- 【その3】
    CREATE PROCEDURE #TMP_PROC3
            @ProcNm  varchar(10) ,      -- 実行するストアドプロシージャの名前
            @Param3  varchar(80) = NULL -- 渡すパラメータの値
  AS
    -- 実行するストアドプロシージャの名前は引数で渡されます
    EXEC @ProcNm  @Param3
GO


-- ********************************
--    アプリケーションの実行
-- ********************************
    DECLARE @ProcName varchar(10)

    -- 【その1】の実行
    PRINT ''
    SELECT @ProcName = '#TMP_PROC1'
    EXEC @ProcName @Param1 = @ProcName

    -- 【その2】の実行
    PRINT ''
    SELECT @ProcName = '#TMP_PROC2'
    EXEC @ProcName @Param2 = @ProcName

    -- 【その1】の実行
    PRINT ''
    EXEC #TMP_PROC3 '#TMP_PROC1' , '#TMP_PROC3から呼び出しました'

    -- 【その2】の実行
    PRINT ''
    EXEC #TMP_PROC3 '#TMP_PROC2' , '#TMP_PROC3から呼び出しました'
GO


-- 削除する
    EXEC Delete_TempObject '#TMP_PROC1' , 'P '
    EXEC Delete_TempObject '#TMP_PROC2' , 'P '
    EXEC Delete_TempObject '#TMP_PROC3' , 'P '
    DROP PROC  Delete_TempObject
GO




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

ウィンドウを閉じる


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


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