系统权限授权格式:
角色:即是一组相似的权限,可以用来同一授权给一些用户。这样把相似的权限统一起来,易于给用户授权和维护系统权限,同时,一个用户也可以被授予多个角色权限。 用例如下:
CREATE ROLE role; GRANT create table, create view TO manager; GRANT manager TO userA, userB; 对象权限:
GRANT { object_priv (, object_priv …) | ALL } [ ( columns ) ] ON object TO { user [, user … ] | role [PUBLIC] [WITH GRANT OPTION] 注意以下几点: 1. 2. 3. 4.
DBA可授权给用户,对特定的对象执行某项操作; 对象权限因对相的不同类型而有区别; 对象的所有者拥有对象的所有权限; 对象的所有者可以对对象授予特定的权限。
格式如下: 例:
GRANT update ( last_name, first_name, address ) ON t_emp TO manager
在Oracle系统中,可通过如下数据字典查看用户权限情况: 数据字典表 ROLE_SYS_RPIVS ROLE_TAB_PRIVS USER_ROLE_PRIVS 说明 授予角色的系统权限 授予据色的表权限 用户可使用的角色 USER_TAB_PRIVS_MADE 用户对象所授予的对象权限 USER_TAB_PRIVS_RECD 用户所授予的对象权限 USER_COL_PRIVS_MADE 用户对象列所授予的对象权限 USER_COL_PRIVS_RECD 用户在特定的列上所授予的权限
23
Company Confidential - For internal use only
权限的回收:
通过使用revoke命令可以收回授予其他用户的权限,同时授予用户的with grant option也会收回。 格式如下:
REVOKE {privilege [, privilege …] | ALL } ON object FORM { user [,user …] | role | PUBLIC } [CASCADE CONSTRAINTS] 例:
REVOKE select, insert ON S_EMP FORM manager;
创建同义词:
为了引用其他用户的某个表,必须使用这个表的全称,即是用户名加表名,通过使用同义词就可避免这个麻烦,可以引用其他用户的表、视图、序列、过程或是其他别的对象。 格式如下:
CREATE [PUBLIC] SYNONYM synonym FOR object; 说明: PUBLIC Synonym Object 例:
CREATE SYNONYM T_EMP FOR scott.t_tmp;
远程数据库的访问:
通过使用数据库链接,用户可以将一组分布的数据库作为一个单一的、集成的数据库来处理。
数据库链接需要SQL*NET运行在远程数据库访问中所涉及到的每一台主机上(“HOSTS”),通常SQL*NET由数据库管理员(DBA)或系统管理员启动。
创建数据库链接语法:
所有用户都可访问的同义词 创建的同义词名 同义词的引用源
24
Company Confidential - For internal use only
Create [public] database link remote_connect Connect to username identified by password Using ?connect string‘ 当建立数据库链接是具体使用的语法取决于下面两个条件: 1. 2.
数据库链接的“公共”或“私有”状态。 使用缺省还是显示方式登录远程数据库。
为了建立数据库链接,必须拥有CREATE DATABASE LINK系统权限,用来连接远程数据库的账号必须拥有CREATE SESSION特权。这两种系统特权都包含在Oracle中的CONNECT角色中。
通过使用数据库链接和同义词来隐藏数据库的物理存放位置,如下:create synonym emp for emp@remote_connect;
Company Confidential - For internal use only
25
UNIT4 PL/SQL
单元培训目标
?
掌握PL/SQL常用语法; 使用Oracle Procedure Builder;
能创建包、函数和过程解决一些复杂问题; 掌握出错流程处理
?
?
?
LESSON 1简单PL/SQL
PL/SQL是Oracle扩展的、具有程序设计特色的程序语言,它可以把数据维护和数据检索容入在程序过程当中。 PL/SQL结构
DECLARE -可选项 - 变量,常数,游标,用户定义的例外 BEGIN - Mandatory - SQL 语句 - PL/SQL 控制语句 EXCEPTION – 可选项 - 例外处理 END; Declarative[optional]:包括所有变量、常量、游标和用户定的例外等 Executable [Mandatory]:包括各种SQL代码和PL/SQL代码等 Exception Handling [optional]:对各种例外情况的处理
通常,每一个PL/SQL单元包含一个或多个块结构,这些块之间可以是完全独立的,也可以是一个块在另一个块里面。即是,一个块又能被分为若干个更小的块。 下面是一些典型的PL/SQL程序结构: 程序结构 匿名块 说明 没有特定名称的PL/SQL块,存在于APPLICATION中 命名PL/SQL块,能接受参数和重复调用 命名PL/SQL块,能接受参数和重复调用 命名PL/SQL模块,包含相关的Procedure、function使用位置 所有PL/SQL环境 数据库procedure、function Application Procedure、function Package Oracle database Server Developer 2000的组件,例如FORMS Oracle database Server
26
Company Confidential - For internal use only
和变量 Database trigger 与数据库表联系在一起的PL/SQL块,能自动触发 与Application事件联系在一起的PL/SQL块,能自动触发 Oracle database Server Application trigger Developer 2000的组件,例如FORMS
匿名块,过程和函数 I.匿名块
[DECLARE] BEGIN -- 语句 [EXCEPTION] END; II.过程
PROCEDURE name is BEGIN -- 语句 [EXCEPTION] END; III.函数
FUNCTION name RETURN datatype IS BEGIN -- 语句 RETURN VALUE [EXCEPTION] END;
过程 作为一段PL/SQL代码执行 没有返回数据类型 可以返回一个或多个值 包
包是被集中到单独一个单元的一组过程、函数、变量和SQL语句。为了执行一个保中
过程与函数的对比:
函数 作为一个表达式调用 必须包含返回数据类型 必须且只能返回一个值
27
Company Confidential - For internal use only