| 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