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