数据库
1、 三张表
User: id,name
Data:id,name
Right:userid,dataid,allow,owner,deny
Owner data 管理员
Allow 可操作data
Deny 禁止操作data
一个用户拥有多种权限
--Grant privilege on 表 to 用户
实现一个存储过程,用来设置用户和数据的权限
Creat procedure ‘test’,’creatright’(in admin vachar(45),in user vachar(45),in data vachar(45),in right varchar(3))
BEGINEND存储过程的输入
Admin 当前执行人
User 当前执行人
Data 数据名
Right string 一个字符串 由ado 三个字母组成,表示三种权限,每种权限字母至多出现一次存储过程要完成如下功能
Admin 当前用户如不存在  创建相应用户
User   被授权用户如不存在  创建相应用户
Data   数据名称不存在,创建相应数据,并创建一条right 数据,记录admin是data的owner
如果admin 是data 的owner 且没有被deny,才创建(修改)right ,用来记录user对data的权限,将字符串right string表示的权限信息记录到right表中,相应记录上,
例外:
修改不能导致data没有owner,或是data的所有owner都被deny。
完成数据记录后,执行一句查询,要求查处所有user在所有的data 上的可操作权限,可操作权限是owner或allow 不能被deny 
查询结果为三列,第一列用户名,第二列数据名,第三列权限字符串,内容是“allow”或owner
如果用户同时拥有两种权限。则查询结果以两行表示
查询结果按user、data、right优先级顺序升序排序
进入存储过程时,SQL默认为自动提交状态