八宝书库 > 文学其他电子书 > oracle从入门到精通(PDF格式) >

第8部分

oracle从入门到精通(PDF格式)-第8部分

小说: oracle从入门到精通(PDF格式) 字数: 每页4000字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




  和最小上限,其参数必须为  

 MLSLABEL 类型,返回值为 RAW MLSLABEL 类型。  

   

  user 函数,返回当前用户的数据库用户名。  

  uid 函数,返回唯一标识当前用户的整数。  

  这两个函数在完整性约束检查时会用到,可以当作引用变量一样引用它们。  

   

  userenv(x)函数,返回当前会话的一些信息,由 X 指定返回何种信息。在写一个指定应用的审 

  计测试表或决定为当前会话指定哪种语言时会用到,但完整性约束时不能用。  

   参数:  

      Entryid    返回有效的审计条目标识   

      Label      返回当前会话的标签  

      Language   以“语言。字符集”形式返回所用的语言和字符集  

      Sessionid  返回正在使用的审计会话号  

      Terminal   返回当前会话终端所用的操作系统  

   



1。7、嵌套函数:  



  单行函数可以嵌套任意层;  

  嵌套函数从最深层开始执行。  



1。  通用函数:  



  BFILENAME(directory;file_name)  

  返回操作系统中与物理文件 file_name 相关的 BFILE 位置指示符。directory 必须是数据字典 



                              第 21 页,共 106 页 


…………………………………………………………Page 22……………………………………………………………

资源来自网络,仅供学习!                                                       Oracle 从入门到精通 



  中的一个 DIRECTORY 类型对象。  

  COALESCE(,,,,可以多个参数)返回从左到右的第一个非空的表达式。如果所有表达式都为 

  NULL,则返回 NULL。  

  EMPTY_BLOB/EMPTY_CLOB  

  返回一个空的 LOB 位置指示符。EMPTY_CLOB 返回一个字符位置指示符,EMPTY_BLOB 返回一个二 

  进制位置指示符。  

  EXISTSNODE(XMLType_instrance;Xpath_string)  

  使用 Xpath_string 中的路径,确定由 XMLType_instrance 标识的 XML 文档的 TRAVELSAL 是否返 

  回任何节点。这个函数将返回一  个 NUMBER 值,如果没有节点则为 0,如果有节点则为大于 0。  

  EXTRACT(XMLType_instrance;Xpath_string)  

  应用 Xpath_string 之后,返回由 XMLType_instrance 标识的XML文档的一部分。  

  GREATEST(expr1';expr2'。。。)  

  返回其参数中最大的表达式。在进行比较之前,每个表达式都被隐式转换为 EXPR1 的类型,如 

  果 EXPR1 是字符类型,则使用非填充空格字符比较,返回结果为 VARCHAR2 类型。  

  LEAST(expr1';expr2'。。。)  

  返回其参数中最小的表达式,其余同上。  

  NVL(EXPR1;EXPR2)  

  类型必须匹配,如果 EXPR1是 NULL,则返回 EXPR2,否则返回 EXPR1。返回值与 EXPR1类型相 

  同,除非 EXPR1 是字符类型,在这种情况下将返回 VARCHAR2类型。这个函数用于确保查询记录 

  集中不包含 NULL 值。  

  NVL2(EXPR1;EXPR2;EXPR3)  

  如果 EXPR1是 NULL,则返回 EXPR2,否则返回 EXPR3。返回值与 EXPR2 类型相同,除非 EXPR2 

  是字符类型,在这种情况下将返回 VARCHAR2 类型。  

  SYS_CONNECT_BY_PATH  返回列值的从根到结点的路径,它仅在层次查询中有效。  

  SYS_CONTEXT(namespace;parameter';length')  

  返回与 namespace 的内容相关联的 patameter 的值。使用 DBMS_SESSION。SET_CONTEXT 过程设置 

  参数和 namespace。返回值是 VARCHAR2 类型,如果没有指定 length;则最大长度是 255字节。  

  SYS_DBURIGEN  

  产生一个 URL 用于从数据库中提取 XML 文档。  

  SYS_GUID  

  以 16 位 RAW类型值形式返回一个全局唯一的标识符。  

  SYS_TYPEID(object_type)  

  返回指定类型 object_type 的类型 ID。  

  SYS_XMLAGG  

  将几个 XML文档或文档片段组合为一个文档。  

  SYS_XMLGEN  

  返回一个基于数据库中数据的 XML文档片段。  

  TREAT(expr AS 'REF' 'schema。'type)  

  TREAT 用于改变一个表达式的声明类型。仅可以将声明类型改变为给定表达式的子类型或超类 

  型。以类型'schema。'type 返回expr,如果指定了 REF,则返回 REF。  

  UID  

  返回一个唯一标识当前数据库用户的整数,UID没有参数。  

  VSIZE(x)返回 X 内部表示的字节数。  

  NULLIF(a;b)如果 A 等于B 返回NULL,如果不等于返回 B。  

  DUMP(expr';number_format';start_position'';length'')  

  返回一个包含 EXPR 内部表示信息的 VARCHAR 值,如果没有指定 NUMBER_FORMAT,则返回结果以 



                                 第 22 页,共 106 页 


…………………………………………………………Page 23……………………………………………………………

资源来自网络,仅供学习!                                                           Oracle 从入门到精通 



  十进制形式返回。如果指定了 start_position和 length,则返回从 start_position开始,长 

  为 length 字节的字符串,缺省是返回整个表达式。所返回的数据类型是内部数据类型编码的对 

  应数字。  

    

  NUMBER_FORMAT  

  格式  返回结果  

  8     8 进制符号  

  10        10 进制符号  

  16        16 进制符号  

  17        单字符  

    

  编码            数据类型                            有效于  

      

  1         VARCHAR2                    ORACLE7  

  2         NUMBER                      ORACLE7  

  8         LONG                        ORACLE7  

  12            DATE                        ORACLE7  

  23            RAW                         ORACLE7  

  24            LONG RAW                    ORACLE7  

  69            ROWID                       ORACLE7   

  96            CHAR                        ORACLE7  

  112           CLOB                        ORACLE8  

  113           BLOB                        ORACLE8  

  114           BFILE                       ORACLE8  

  180           TIMESTAMP                   ORACLE9i      

  181           TIMESTAMP WITH TIMEZONE     ORACLE9i  

  182           INTERVAL YEAR TO MONTH      ORACLE9i  

  183           INTERVAL DAY TO SECOND      ORACLE9i  

  208           UROWID                      ORACLE9i  

  231           TIMESTAMP WITH LOCAL TIMEZONE           ORACLE9i      

    

  USERENV'option'  

  基于 option返回包含有关当前会话信息的 VARCHAR2 值。  

    

  函数的行为  

    

  选项值                   USERENV(option)的行为  

    

  'OSDBA'               如果当前会话将 OSDBA角色的设置打开了,则返回'TRUE';否则返回 

  'FALSE';注意返                   回值是 VARCHAR2 类型,而不是 BOOLEAN 类型。  

  'LABEL'               仅对 TRUSTED ORACLE 中有效,返回当前会话标志。  

'LANGUAGE'          返回当前会话所使用的语言和地域,以及数据库字符集,这是 NLS 参数,返 

                    回形式是 LANGUAGE_TERRITORY。CHARACTERSET。  

'TERMINAL'          返回当前会话所使用终端的操作系统标识符。对于分布式的 SQL 语句,返回 

                    的是本地会话的标识符。  

'SESSIONID'         如果初始化参数 AUDIT_TRAIL 被设置为 TRUE,那么将返回审计会话标识符。 



                                    第 23 页,共 106 页 


…………………………………………………………Page 24……………………………………………………………

资源来自网络,仅供学习!                                                           Oracle 从入门到精通 



                    在分布式 SQL 语句中,USERENV('SESSIONID')是无效的。  

'ENTRYID'           如果初始化参数 AUDIT_TRAIL 被设置为 TRUE,那么将返回可用的审计项标识 

                 符。在分布式 SQL 语句中 USERENV('ENTRYID')是无效的。  

  'LANG'            返回语言名称的 ISO 缩写符号。它的格式比 USERENV('LANGUAGE')要短。  

    

  例:  

    select USERENV('TERMINAL');USERENV('LANGUAGE') from dual;  

      

    USERENV('TERMINA USERENV('LANGUAGE')  

    ……………………………………………………………………………………………………………………………………………………………………………… 

    WNJ              SIMPLIFIED CHINESE_CHINA。ZHS16GBK  

    



2。  条件表达式:  



  CASE 表达式(简单 CASE)  

  语法:  

  CASE 表达式 WHEN  条件1 THEN 返回值 1  

        WHEN  条件 2 THEN 返回值 2  

    。  

    。  

    。  

        WHEN  条件 n THEN 返回值 n  

  ELSE  返回值  

  END     

    

  DECODE 函数  

    

  语法:  

  DECODE(  

    条件;比较值1,返回值 1  

         比较值2,返回值 2  

                。  

                。  

                。  

         比较值n,返回值 n  

         返回值(不满足条件时)                  

      )  

    

  select last_name;salary;  

    decode( trunc(salary/2000;0);//条件  

        0; 0。00;//比较值 1,返回值 1  

        1; 0。09,  

        2; 0。20,  

        3; 0。30,  

        4; 0。40,  



                                    第 24 页,共 106 页 


…………………………………………………………Page 25……………………………………………………………

资源来自网络,仅供学习!                                                        Oracle 从入门到精通 



       5; 0。42,  

       6; 0。44,  

        0。45  

          )   TAX_RATE  

  from employees  

  where department_id=80;  

    



3。  从多表中显示数据:  



  SQL(老版本的)  

    

  等值查询  

  SELECT TABLE1。COLUMN;TABLE2。COLUMN FROM TABLE1;TABLE2 WHERE  

  TABLE1。COLUMN1=TABLE2。COLUMN2;//自然连接使用 AND 操作符增加查询条件  

  使用表的别名来简化查询,提高查询功能。  

    

  SELECT E。ID,D。ID FROM EMPL E,DEP D WHERE E。NAME=D。NAME;   

  E、D:表别名  

  多表等值连接查询  

  为了连接 N个表,至少需要 N…1 个连接条件。  

    

  非等值查询  

  使用 BETWEEN AND 查询近似值作为连接条件的多表结果。  

  WHERE E。SALARY BETWEEN J。LOW AND J。HIGH   

    

  外连接查询  

  SELECT T1。COL;T2。COL FROM WHERE T1。COL(+)=T2。COL;左外连接所有 T2 的T1 信息。          

  SELECT T1。COL;T2。COL FROM WHERE T1。COL=T2。COL(+);右外连接所有 T1 的T2 信息。  

  为了看到与连接条件不匹配的数据,就必须得用外连接。  

    

  自连接  

  通过表的别名来创建虚拟逻辑表;进行自连接查询。  

  select worker。last_name || 'work for' || manager。last_name  

  from employees worker;employees manager  

  where worker。manager_id=manager。employee_id;  

    

  9I 适应性连接:  

  select t1。col;t2。col  

  from table   

  cross join t2 //交叉连接  

  natural join t2//自然连接:把两表中所有等值的字段都作为连接条件(但这些连接条件不用 

  写)。  

      从两个表中选出连接列的值相等的所有行。   

      如果两个列的名称相同,但数据类型不同;或是类型相同,意义不同都会出错。  

    



                                  第 25 页,共 106 页 


…………………………………………………………Page 26……………………………………………………………

资源来自网络,仅供学习!                                                      Oracle 从入门到精通 



  join t2 using (column_name);基于自然连接,只有在 USING 中出现的,才作为连接条件(在 

  USING 中列名前一定不能加前缀)。  

     

  join t2 on (t1。col=t2。col);基于 ON 的自然连接。等值、非等值或自连接都可以实现。  

    

  left|right|full outer join t2 on(t1。col=t2。col);  

    

    select e。last_name;d。department_name;l。city  

    from employees e  

    left outer join departments d on e。department_id=d。department_id  

          right out

返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的