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

-- [SQL04_01.SQL]
--             SQLServer7.0  Transact-SQL言語
--             日本技術ソフト開発  堀川 明
--            http://www.horikawa.ne.jp/msde/
--
-- このSQLプログラムは、
--   masterデータベースにストアドプロシージャを作成します
--   sp_ の名前ではありませんので、呼び出し時にはフルネーム
--   で呼び出す必要があります
--

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

-- ******************
--   接続情報の表示
-- ******************
    PRINT ''
    PRINT '私のログイン名 = ' + SUSER_SNAME()
    PRINT '私のユーザ名   = ' + USER_NAME()
    PRINT '私が接続しているカレントデータベース名 = ' + DB_NAME()
GO

-- *********************************************************
--             ストアドプロシージャの作成権限調査
--    1)私にストアドプロシージャの作成権限がありますか?
--    2)db_owner か db_ddladmin の権限が必要です 
--    3)PERMISSIONS関数は、接続中データベースのステートメント
--      権限を取得
-- *********************************************************
    IF PERMISSIONS() & 4 = 4
       BEGIN
           PRINT ''
           PRINT '私には CREATE PROCEDUREの権限があります。OK!'
           PRINT ''
       END
    ELSE
       BEGIN
           PRINT ''
           PRINT '***** Error!! *******'
           PRINT 'master データベースにストアドプロシージャを作成する' +
                 '権限はありません'
           PRINT 'システム管理者sa でログインしてください'
           PRINT ''
           RAISERROR('中止します' , 16 , 127 )
           RETURN
       END
GO

-- *********************************************************
--            ストアドプロシージャの作成権限調査(2)
--  1)データベースロールで、ストアドプロシージャの作成権限
--    が与えられる
--  2)所属ロールの調査方法は、IS_MEMBERを使う
--  3)db_owner か db_ddladmin ですか?
-- *********************************************************
    IF IS_MEMBER('db_owner')    = 1 PRINT '私は db_owner    権限があります'
    IF IS_MEMBER('db_ddladmin') = 1 PRINT '私は db_ddladmin 権限があります'
    PRINT ''
GO


-- *********************************
--   既存の同一名オブジェクトの削除
-- *********************************
    IF EXISTS (SELECT name FROM sysobjects
                  WHERE name = 'MyProc' AND type = 'P ')  
      BEGIN
            PRINT 'MyProcプロシージャを削除しました'
            DROP PROCEDURE MyProc
      END
GO

-- *********************************
--   masterデータベースに作成する
-- *********************************
    CREATE PROCEDURE MyProc
   AS
        PRINT 'Hellow! (This is master database)'
GO

-- 既定のデータベースに戻す
    USE MySampleTest
GO

-- masterに作成したストアドプロシージャを実行する
    master..MyProc
GO

-- masterに作成したストアドプロシージャを削除
    USE master
    DROP PROCEDURE MyProc
GO




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

ウィンドウを閉じる


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


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