MSDE FunClub | 最終更新日 : 2000/06/01 | |
Microsoft Data Engine FunClub |
|
|
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