打印本文 打印本文 关闭窗口 关闭窗口
PL/Sql循序渐进全面学习教程--Oracle
作者:武汉SEO闵涛  文章来源:敏韬网  点击数5289  更新时间:2009/4/22 22:04:46  文章录入:mintao  责任编辑:mintao
DROP SYNONYM D_SUM; 


      课程 八 用户访问控制
                                  
本课重点:
   1、创建用户
   2、创建角色来进行安全设置
   3、使用GRANT或REVOKE 来控制权限
   
   注意:以下实例中标点均为英文半角
  
   一、概述:
       ORACLE通过用户名和密码进行权限控制。
     数据库安全:系统安全和数据安全
     系统权限:使用户可以访问数据库
     对象权限:操纵数据库中的对象
     SCHEMA:各种对象的集合
   二、系统权限:
      1、超过80个权限可用。
      2、DBA有最高的系统权限:
               CREATE NEW USER
               REMOVE USERS
               REMOVE ANY TABLE
               BACKUP ANY TABLE
   三、创建用户
      1、CREATE USER user IDENTIFIED BY password;
      2、系统权限:CREATE SESSION Connect to the database.
                    CREATE TABLE Create tables in the user’s schema.
                   CREATE SEQUENCE Create a sequence in the user’s schema.
                   CREATE VIEW Create a view in the user’s schema.
                   CREATE PROCEDURE Create a stored procedure, function, or package in
                   the user’s schema. 
      3、授权用户系统权限:
        GRANT privilege [, privilege...] TO user [, user...];
        GRANT CREATE TABLE TO SCOTT;
   四、角色的使用
     1、概念:角色是一组权限的命名,可以授予给用户。这样就如同给了某个用户一个权限包。
     2、创建、授予给角色:
        CREATE ROLE MANAGER;
        GRANT CREATE TABLE,CREATE VIEW TO MANAGER;
        GRANT MANAGER TO CLARK
   五、修改密码:
      ALTER USER user IDENTIFIED BY password;
   六、对象权限:
     1、语句:
 GRANT {object_priv(, object_priv...)|ALL}[(columns)]
ON object
TO {user[, user...]|role|PUBLIC}
[WITH GRANT OPTION];
     2、实例:
    最简单:
    SQL> GRANT select
2 ON s_emp
3 TO sue, rich;
    稍复杂:
     SQL> GRANT update (name, region_id)
      2 ON s_dept
      3 TO scott, manager;
  SQL> GRANT select, insert
2 ON s_dept
3 TO scott
4 WITH GRANT OPTION; 

     课程 九 声明变量
                                  
本课重点:
   1、了解基本的PLSQL块和区域
   2、描述变量在PLSQL中的重要性
   3、区别PLSQL与非PLSQL变量
   4、声明变量
   5、执行PLSQL块
   
   注意:以下实例中标点均为英文半角
  
   一、概述:
       1、PLSQL 块结构:
       DECLARE --- 可选
        变量声明定义
       BEGIN  ---- 必选
        SQL 和PLSQL 语句
       EXCEPTION ---- 可选
       错误处理
       END;---- 必选
   二、实例:
       declare
       vjob varchar(9);
       v_count number:=0;
       vtotal date:=sysdate +7;
       c_tax constant number(3,2):=8.25;
       v_valid boolean not null:=true;
      begin
       select sysdate into vtotal from dual;
         end;
           /
      上例中,如果没有这个SELECT语句,会如何?
       出错,说明必须有STATEMENTS
       如果: select sysdate from dual into vtotal ;
       同样,也不行。而且变量与赋值的类型要匹配。
    三、%TYPE的属性
       声明一个变量使之与数据库某个列的定义相同或与另一个已经定义过的变量相同
       所以%TYPE要作为列名的后缀:如:
      v_last_name s_emp.last_name%TYPE;
       v_first_name s_emp.first_name%TYPE; --这样做的好处是我们不必去知晓此列的类型与定义
       或:v_balance NUMBER(7,2);
       v_minimum_balance v_balance%TYPE := 10;
    四、声明一个布尔类型的变量
       1 只有TRUE、FALSE、NULL可以赋值给BOOLEAN变量
       2 此变量可以接逻辑运算符NOT、AND、OR。
       3、变量只能产生TRUE、FALSE、NULL。
       实例:
      VSAL1:=50000;
      VSQL2:=60000;
      VCOMMSAL BOOLEAN:=(VSAL1<VSQL2);
      --其实是把TRUE赋值给此变量。
    五、LOB 类型的变量
    共有CLOB、BLOB、BFILE、NCLOB几种,这里不做为重点。
    六:使用HOST VARIABLES
    SQL> variable n number
     SQL> print n
    :n=v_sal /12;
   :n这个加了:前缀的变量不是PLSQL变量,而是HOST。
    七、以下几个PLSQL声明变量,哪个不合法?
    A 、DECLARE
          V_ID NUMBER(4);
    B、DECLARE
          V_X,V_Y,V_Z VARCHAR2(9);
    C、DECLARE
       V_BIRTH DATE NOT NULL;
    D、DECLARE
       V_IN_STOCK  BOOLEAN:=1;
    E、DECLARE
       TYPE NAME_TAB IS TABLE OF VARCHAR2(20)
            INDEX BY BINARY_INTEGER;
        DEPT_NAME NAME_TAB;
    上面的习题我会在下章给出答案,这也正是声明变量的规则和难点。
  


课程 十 写执行语句
                                  
本课重点:
   1、了解PLSQL执行区间的重要性
   2、写执行语句
   3、描述嵌套块的规则
   4、执行且测试PLSQL块
   5、使用代码惯例
   
   注意:以下实例中标点均为英文半角
  
   一、PLSQL 块的语法规则:
     1、语句可以跨跃几行。
     2、词汇单元可以包括:分隔符、标识符、文字、和注释内容。
     3、分隔符:
      +-*/=<>||....
     4、标识符:
      最多30个字符,不能有保留字除非用双引号引起。
      字母开头,不与列同名。
     5、文字串:如 V_ENAME:=''''FANCY'''';要用单引号括起来。
        数值型可以用简单记数和科学记数法。
     6、注释内容:单行时用--    多行用/*   */
        与C很相似
   二、SQL函数在PL/SQL的使用:
     1、可用的:
      单行数值型、字符型和转换型,日期型。
     2、不可用的:
      最大、最小、DECODE、分组函数。
      实例:
      BEGIN
         SELECT TO_CHAR(HIREDATE,''''MON,DD,YYYY'''') FROM EMP;
      END;
      V_comment:=user||'''':''''||sysdate; -- 会编译出错
      V_comment:=user||'''':''''||to_char(sysdate); --正确
      如果有可能,PLSQL都会进行数据一致性的转换,但ORACLE推荐你应该进行显示的转换,因为这样会提高性能。
   三、嵌套块和变量作用区域
     1、执行语句允许嵌套时嵌套。
     2、嵌套块可以看作正常的语句块。
     3、错误处理模块可以包括一个嵌套块
      4、exponential指数 逻辑、算数、连接、小括号
     5、看正面实例:
   declare
vjob varchar(9);
v_count number:=0;
vtotal date:=sysdate +7;
c_tax constant number(3,2):=8.25;
v_valid boolean not null:=true;
ttt vtotal%type;
begin
--select sysdate into vtotal from dual;--体会有无此句与结果的影响

上一页  [1] [2] [3] [4] [5] [6] [7] [8]  下一页

打印本文 打印本文 关闭窗口 关闭窗口