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

-- [SQL01_07.SQL]
--             SQLServer7.0  Transact-SQL言語
--             日本技術ソフト開発  堀川 明
--            http://www.horikawa.ne.jp/msde/
--
-- このSQLプログラムは、
--  [商品名情報]テーブル と [商品値段]テーブルを表示するビュー表を
--  登録します
--  表の結合処理で使われる基本になる表です
--

-- これから操作する既定のデータベースを MySampleTest にします
    USE MySampleTest
GO


-- *********************************************
--   一時ストアドプロシージャが登録済みですか?
-- 同じ名前が登録済みのときは、それを削除
-- *********************************************
-- tempdbのsysobjectsに、一時テーブルや一時プロシージャの名前が管理
    IF EXISTS (SELECT name FROM tempdb.dbo.sysobjects
                WHERE id = object_id('tempdb..#TMP_DELETE') AND type = 'P ')  
      BEGIN
            PRINT '一時プロシージャを削除します'
            DROP PROCEDURE #TMP_DELETE
      END
GO

-- *****************************************************************************
--                          【一時ストアドプロシージャの登録】
--    指定されたオブジェクトを削除する
--    名前が#で始まるものは一時オブジェクトです。私のこの接続期間だけ、有効です
--    勉強のため、一時オブジェクトを使いましたので、普通の名前に変更してもよい
--  [注意]
--    DROP TABLE 変数名 の形式は許されません
--    sp_executesql  は、UNICODE 文字列が引数です
-- *****************************************************************************
    CREATE PROCEDURE #TMP_DELETE
         @OBJECT_NAME  varchar(20) ,     -- 削除するオブジェクトの名前
         @OBJECT_TYPE  char(2)           -- オブジェクトのタイプ
    AS
    DECLARE @SQLSTR nvarchar(80)         -- SQL文を作成する(UNICODE文字列にする)

    -- 該当オブジェクトの検索(存在しますか?)
    IF EXISTS (SELECT name FROM sysobjects
                        WHERE name =  @OBJECT_NAME AND type = @object_type )  
       BEGIN
             IF @OBJECT_TYPE = 'U '
                BEGIN
                    SELECT @SQLSTR = N'DROP TABLE ' + @OBJECT_NAME
                    EXEC sp_executesql @SQLSTR
                    PRINT ''
                    PRINT 'テーブル[' + @OBJECT_NAME + ']を削除しました'
                END
             ELSE IF @OBJECT_TYPE = 'V '
                BEGIN
                    SELECT @SQLSTR = N'DROP VIEW ' + @OBJECT_NAME
                    EXEC sp_executesql @SQLSTR
                    PRINT ''
                    PRINT 'ビュー[' + @OBJECT_NAME + ']を削除しました'
                END
             ELSE IF @OBJECT_TYPE = 'P '
                BEGIN
                    SELECT @SQLSTR = N'DROP PROCEDURE ' + @OBJECT_NAME
                    EXEC sp_executesql @SQLSTR
                    PRINT ''
                    PRINT 'プロシージャ[' + @OBJECT_NAME + ']を削除しました'
                END
       END
GO

-- **************************************
-- 既存のビュー表があれば、それを削除する
-- **************************************
    EXEC #TMP_DELETE '商品名情報' , 'V '
    EXEC #TMP_DELETE '商品値段'   , 'V '
GO


-- ******************************
--  新しく ビュー表 を登録します
-- ******************************
    CREATE VIEW 商品名情報
    AS
        SELECT 商品.商品番号 , 
               商品.商品名 ,
               商品.商品型番
        FROM 商品
        WHERE 商品.商品番号 IN ( 'A001' , 'A003' , 'B001' )
-- このGOは1個のビュー表登録完了として必ず必要です
GO
    PRINT ''
    PRINT '[商品名情報] ビュー表を作成しました'
GO


    CREATE VIEW 商品値段
    AS
        SELECT 商品.商品番号 , 
               商品.売値 ,
               商品.卸値
        FROM 商品
        WHERE 商品.商品番号 IN ( 'A001' , 'B001' , 'B002' )
-- このGOは1個のビュー表登録完了として必ず必要です
GO

    PRINT ''
    PRINT '[商品値段]   ビュー表を作成しました'
GO

-- 自分が作成した一時プロシージャは最後に自分から掃除するとよい
    DROP PROCEDURE #TMP_DELETE
GO








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

ウィンドウを閉じる


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


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