`
wangyijiangshui
  • 浏览: 85517 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类

oracle 常用功能

阅读更多

1、oracle的两种分页方式
     ①、select * from (select a1.*,rownum rn from  (select * from emp) a1 where rownum

where rn >=6;  

    ②、select * from (select e.*,rownum rn from emp e) a1 where a1.rn between 6 and 10;

 

2、序列

select max(HANDOVER_BILL_ID) FROM HK_INTERCHANGE --30014589

select SQ_HK_INTERCHANGE.nextval as id from dual --30000246

alter sequence SQ_HK_INTERCHANGE increment by 10000;(序列的递增递减跨度,正的是递增,负的是递减)

 

-- Modify the last number 

alter sequence SQ_HK_ADD_CON increment by 99899999 nocache;

select SQ_HK_ADD_CON.nextval from dual;

alter sequence SQ_HK_ADD_CON increment by 1 nocache;

declare

  LastValue integer;

begin

  loop

    select SQ_HK_ADD_CON.currval into LastValue from dual;

    exit when LastValue >= 99999999 - 1;

    select SQ_HK_ADD_CON.nextval into LastValue from dual;

  end loop;

end;

/

alter sequence SQ_HK_ADD_CON increment by 1 nocache;

 

 

3、将查询结果列转化成逗号分隔的字符串

select TO_CHAR(wm_concat(flightorplate_no)) flightorplate_no From HK_AIRMASTERBILLS  t where master_bill_code='222-333333' GROUP BY t.master_bill_code

 

 

4、复杂sql

UPDATE HK_AIRMASTERBILLS ha SET 

HA.FLIGHTORPLATE_NO = 

(

SELECT HAU.FLIGHT_NO FROM HK_HAULINFO hau WHERE 

HAU.AIRLINE_ID = HA.AIRLINE_ID AND 

HAU.HAUL_SEQ = HA.LINE_TYPE AND 

HAU.REAL_LINE_ID = HA.REAL_LINE_ID AND 

HAU.FROMCITY = HA.FLY_FROM_POINT AND 

HAU.ARRIVALCITY = HA.FLY_ARRIVE_POINT AND

HAU.HAUL_TYPE = HA.TRANS_TYPE

),

HA.AIRWAY = 

(

SELECT HAU2.AIRWAY FROM HK_HAULINFO hau2 WHERE 

HAU2.AIRLINE_ID = HA.AIRLINE_ID AND 

HAU2.HAUL_SEQ = HA.LINE_TYPE AND 

HAU2.REAL_LINE_ID = HA.REAL_LINE_ID AND 

HAU2.FROMCITY = HA.FLY_FROM_POINT AND 

HAU2.ARRIVALCITY = HA.FLY_ARRIVE_POINT AND

HAU2.HAUL_TYPE = HA.TRANS_TYPE

)

WHERE 

ha.FLIGHTORPLATE_NO IS NULL AND 

ha.AIRWAY IS NULL AND 

ha.MASTER_BILL_TYPE IN ('0','1') AND 

ha.CREATE_TIME > to_date('2013-10-07 00:00','yyyy-mm-dd hh24:mi') AND 

ha.REAL_LINE_ID IS NOT NULL AND 

(SELECT hairnew.TRANSITCITY FROM HK_AIRLINE_NEW hairnew WHERE hairnew.AIRLINE_ID = ha.AIRLINE_ID) = 

ha.TRANSFER_CITY AND 

ha.AIRLINE_TYPE = (SELECT HAIRNEW2.AIRLINE_TYPE FROM HK_AIRLINE_NEW hairnew2 WHERE hairnew2.AIRLINE_ID = ha.AIRLINE_ID) 

 

5、特殊的update

update BD_CXXX set REQ_SPD=((CASE WHEN MLG_CNT >0 THEN MLG_CNT ELSE EST_MLG_CNT END) *60)/RUN_TM 

WHERE RUN_TM>0 and REQ_SPD <= 0;

 

6、查看Oracle执行计划:

explain plan for select count(*) from BD_CAR_LINE_BIND;

select * from table(DBMS_XPLAN.DISPLAY);

 

 

7、Oracle的CASE When

select decode(depaofav_pro,'上海市',depaofav_pro,'天津市',depaofav_pro,'重庆市',depaofav_pro,'北京市',depaofav_pro,depaofav_pro||'.'||depaofav_city) city

from HK_DEPAOFAVIATION

 

8、一条select语句动态产生update sql

select 'update car_bill_record set billdatetime=`'

|| TO_CHAR(start_tm,'yyyy-mm-dd hh24:mi:ss')

|| '` where billnumber=`' || bill_id

|| '` and lineId=`' ||  ship_id ||'`'

as updateSql from BD_TRAN_VCHR where 

arv_site_tm > TO_DATE('2014-08-24 00:00:00','yyyy-mm-dd hh24:mi:ss')

 

select 'update repetition_schedule_stop_d'||

' set day_adjustment=(select LEV_DT from bd_tjd where'|| 

' CXXX_ID in ( select id from BD_CXXX where DEL_FLG=0 and CAR_LN_CD='||''''||b.CAR_LN_CD||''''|| 'AND PATH_PLC_ID='||b.PATH_PLC_ID||') ),'||

'hour_adjustment= (select to_number(substr(STD_LEV_TM,0,2)) from bd_tjd  where CXXX_ID in ( select id from BD_CXXX where DEL_FLG=0 and CAR_LN_CD='

||''''||b.CAR_LN_CD||''''|| 'AND PATH_PLC_ID='||b.PATH_PLC_ID||') ),'||

'minute_adjustment= (select to_number(substr(STD_LEV_TM,4)) from bd_tjd  where CXXX_ID in ( select id from BD_CXXX where DEL_FLG=0 and CAR_LN_CD='

||''''||b.CAR_LN_CD||''''|| 'AND PATH_PLC_ID='||b.PATH_PLC_ID||') )'||

'where repetition_schedule_gid in ('||''''||'YD.'||b.CAR_LN_CD||''''||') and rep_sched_activity_gid='||''''||'DEPART'||''''||'AND SEQUENCE='||b.PATH_PLC_ID

from (

select (select car_ln_cd from BD_cxxx where id=cxxx_id) CAR_LN_CD,DRV_DT,STD_ARV_TM,LEV_DT,STD_LEV_TM,PATH_PLC_ID from bd_tjd order by cxxx_id asc,PATH_PLC_ID asc

) b 

 

 

select 'update repetition_schedule_stop_d'||

' set day_adjustment=(select DRV_DT from bd_tjd where'|| 

' CXXX_ID in ( select id from BD_CXXX where DEL_FLG=0 and CAR_LN_CD='||''''||b.CAR_LN_CD||''''|| 'AND PATH_PLC_ID='||b.PATH_PLC_ID||') ),'||

'hour_adjustment= (select to_number(substr(STD_ARV_TM,0,2)) from bd_tjd  where CXXX_ID in ( select id from BD_CXXX where DEL_FLG=0 and CAR_LN_CD='

||''''||b.CAR_LN_CD||''''|| 'AND PATH_PLC_ID='||b.PATH_PLC_ID||') ),'||

'minute_adjustment= (select to_number(substr(STD_ARV_TM,4)) from bd_tjd  where CXXX_ID in ( select id from BD_CXXX where DEL_FLG=0 and CAR_LN_CD='

||''''||b.CAR_LN_CD||''''|| 'AND PATH_PLC_ID='||b.PATH_PLC_ID||') )'||

'where repetition_schedule_gid in ('||''''||'YD.'||b.CAR_LN_CD||''''||') and rep_sched_activity_gid='||''''||'ARRIVE'||''''||'AND SEQUENCE='||b.PATH_PLC_ID

from (

select (select car_ln_cd from BD_cxxx where id=cxxx_id) CAR_LN_CD,DRV_DT,STD_ARV_TM,LEV_DT,STD_LEV_TM,PATH_PLC_ID from bd_tjd order by cxxx_id asc,PATH_PLC_ID asc

) b 

 

 

9、

DECLARE

  V_REQ_SPD NUMBER(16, 6);

  V_MLG_CNT NUMBER(10, 2);

 

  V_TTL_ALL_MIN INTEGER;

  V_TTL_GAP_MIN INTEGER;

 

  V_FIRST_LEV_DT INTEGER;

  V_FIRST_LEV_TM VARCHAR2(20);

 

  V_DRV_DT INTEGER;

  V_LEV_DT INTEGER;

  V_ARV_TM VARCHAR2(20);

  V_LEV_TM VARCHAR2(20);

 

  V_DATE_GAP INTEGER;

  V_HOUR_GAP INTEGER;

  V_MIN_GAP  INTEGER;

 

  V_DATE_ALL INTEGER;

  V_HOUR_ALL INTEGER;

  V_MIN_ALL  INTEGER;

 

  V_SEQ   INTEGER;

  V_COUNT INTEGER;

 

  CURSOR CX_INFO IS

    SELECT ID, MLG_CNT, EST_MLG_CNT, REQ_SPD FROM BD_CXXX;

  CX_ROW CX_INFO%ROWTYPE;

 

  CURSOR TJD_INFO(P_CXXX_ID VARCHAR2) IS

    SELECT DRV_DT, LEV_DT, STD_ARV_TM, STD_LEV_TM, PATH_PLC_ID

      FROM BD_TJD

     WHERE CXXX_ID = P_CXXX_ID

     ORDER BY PATH_PLC_ID;

BEGIN

  V_COUNT := 0;

  FOR CX_ROW IN CX_INFO LOOP

    V_TTL_GAP_MIN := 0;

    V_TTL_ALL_MIN := 0;

    V_MLG_CNT     := 0;

    V_REQ_SPD     := 0;

    OPEN TJD_INFO(CX_ROW.ID);

    LOOP

      FETCH TJD_INFO

        INTO V_DRV_DT, V_LEV_DT, V_ARV_TM, V_LEV_TM, V_SEQ;

      EXIT WHEN TJD_INFO%NOTFOUND;

      IF V_SEQ = 1 THEN

        V_FIRST_LEV_DT := V_LEV_DT;

        V_FIRST_LEV_TM := V_LEV_TM;

      END IF;

      IF V_SEQ > 1 THEN

        V_DATE_GAP    := V_LEV_DT - V_DRV_DT;

        V_HOUR_GAP    := TO_NUMBER(SUBSTR(V_LEV_TM,

                                          0,

                                          INSTR(V_LEV_TM, ':') - 1)) -

                         TO_NUMBER(SUBSTR(V_ARV_TM,

                                          0,

                                          INSTR(V_ARV_TM, ':') - 1));

        V_MIN_GAP     := TO_NUMBER(SUBSTR(V_LEV_TM,

                                          INSTR(V_LEV_TM, ':') + 1)) -

                         TO_NUMBER(SUBSTR(V_ARV_TM,

                                          INSTR(V_ARV_TM, ':') + 1));

        V_TTL_GAP_MIN := V_TTL_GAP_MIN + V_DATE_GAP * 24 * 60 +

                         V_HOUR_GAP * 60 + V_MIN_GAP;

      END IF;

    END LOOP;

    V_DATE_ALL    := V_LEV_DT - V_FIRST_LEV_DT;

    V_HOUR_ALL    := TO_NUMBER(SUBSTR(V_LEV_TM, 0, INSTR(V_LEV_TM, ':') - 1)) -

                     TO_NUMBER(SUBSTR(V_FIRST_LEV_TM,

                                      0,

                                      INSTR(V_FIRST_LEV_TM, ':') - 1));

    V_MIN_ALL     := TO_NUMBER(SUBSTR(V_LEV_TM, INSTR(V_LEV_TM, ':') + 1)) -

                     TO_NUMBER(SUBSTR(V_FIRST_LEV_TM,

                                      INSTR(V_FIRST_LEV_TM, ':') + 1));

    V_TTL_ALL_MIN := V_DATE_ALL * 24 * 60 + V_HOUR_ALL * 60 + V_MIN_ALL;

    IF CX_ROW.MLG_CNT IS NOT NULL AND CX_ROW.MLG_CNT > 0 THEN

      V_MLG_CNT := CX_ROW.MLG_CNT;

    ELSIF CX_ROW.EST_MLG_CNT IS NOT NULL AND CX_ROW.EST_MLG_CNT > 0 THEN

      V_MLG_CNT := CX_ROW.EST_MLG_CNT;

    END IF;

    IF V_TTL_ALL_MIN - V_TTL_GAP_MIN > 0 THEN

      V_REQ_SPD := V_MLG_CNT / (V_TTL_ALL_MIN - V_TTL_GAP_MIN) * 60;

    END IF;

    IF V_REQ_SPD != CX_ROW.REQ_SPD AND V_REQ_SPD != 0 THEN

      V_COUNT := V_COUNT + 1;

      UPDATE BD_CXXX SET REQ_SPD = V_REQ_SPD WHERE ID = CX_ROW.ID;

    END IF;

    CLOSE TJD_INFO;

  END LOOP;

  DBMS_OUTPUT.PUT_LINE('更新的记录总数为:' || V_COUNT);

EXCEPTION

  WHEN OTHERS THEN

    DBMS_OUTPUT.PUT_LINE('错误信息:' || SQLERRM());

END;

/

 

分享到:
评论

相关推荐

    Oracle常用功能,基础帮扶新手利器

    本文将详细介绍Oracle的一些常用功能,帮助新手快速上手。 1. **数据存储与管理**:Oracle数据库的核心功能在于存储和管理数据。它使用表来组织数据,通过SQL(结构化查询语言)进行数据的增删改查操作。创建表、...

    oracle常用函数功能演示

    本篇文章将详细解析Oracle的一些常用函数,并通过实例演示它们的功能。 首先,Oracle的数值函数包括三角函数、幂和方根运算以及数值处理函数。例如,`SIN`, `COS`, `TAN`用于三角计算,`POWER`用于求幂,`SQRT`用于...

    Oracle常用命令大全

    ### Oracle常用命令详解 #### 一、Oracle的启动与关闭 **1. 在单机环境下的启动与关闭** - **启动Oracle系统** - **切换用户:** 首先需要切换到Oracle用户环境。 ```bash su - oracle ``` - **使用`svrmgrl`...

    Oracle常用语法3

    在Oracle数据库管理中,数据导出是非常重要的一个功能,它可以帮助用户将数据库中的数据或元数据导出到一个二进制文件中,以便于数据备份或者迁移。在示例中使用的命令为 `exp`,这是Oracle提供的一个命令行工具,...

    oracle常用sql整理

    本文将基于"oracle常用sql整理"的主题,深入探讨Oracle SQL的一些核心概念、语句及其实用技巧,适合初级到中级水平的学习者。 一、SQL基础 SQL是标准化的查询语言,分为DDL(Data Definition Language)、DML(Data...

    oracle常用管理工具

    本文将详细介绍Oracle中的一些常用管理工具,包括Oracle Database Configuration Assistant (DBCA)、SQL*Plus、SQL*Plus Worksheet以及Oracle Enterprise Manager (OEM)。 1. **Oracle Database Configuration ...

    Oracle常用函数和使用方法

    ### Oracle常用函数与使用方法详解 #### 一、Oracle SQL函数概述 在Oracle数据库中,SQL函数被广泛用于处理各种数据类型,包括数值、字符、日期等,它们能够帮助我们更高效地进行数据检索和分析。本文将详细介绍...

    ORACLE常用快捷键设置

    以下是一些关于ORACLE常用快捷键设置的详细说明: 1. **登录后默认选择"My Objects"**:在PLSQL Developer中,设置登录后默认打开"My Objects"目录而不是"All objects"可以显著提升响应速度,特别是对于DBA用户,...

    oracle常用傻瓜问题1000问

    "Oracle常用傻瓜问题1000问"显然是一部针对初学者和中级用户设计的指南,涵盖了日常工作中可能遇到的各种常见问题。在这个文档中,我们可以预见到一系列关于安装、配置、管理、查询优化以及故障排查的问答。 1. **...

    ORACLE常用函数功能及演示

    ORACLE内置函数,相当于C语言中的库函数,提供了常规数据库编程中所需的绝大多数基本功能,并且通过函数的组合或嵌套使用,可以发挥其强大的功能。由于这些内置函数都是由ORACLE公司的编程大家所写,而且其执行代码...

    oracle常用SQL语句(汇总版).docx

    Oracle 是一个功能强大且复杂的关系数据库管理系统,它提供了多种 SQL 语句来管理和操作数据库。在本文中,我们将详细介绍 Oracle 中常用的 SQL 语句,包括数据控制语句(DML)、数据定义语句(DDL)和其他相关知识...

    Oracle 常用脚本.zip

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其强大的功能和高效的数据处理能力深受企业和开发者的青睐。在日常管理和维护Oracle数据库时,经常会用到一些脚本来完成数据备份、性能监控、表空间管理等...

    oracle常用端口号

    下面将详细介绍Oracle常用端口及其功能。 #### 1. Oracle基本端口 - **1521**:这是最著名的Oracle端口之一,用于监听TNS(透明网络服务)连接请求。TNS是Oracle数据库用于客户端与服务器之间通信的一种协议。通过...

    oracle常用cmd命令

    Oracle 是一种关系数据库管理系统,提供了强大的数据存储和管理功能。但是,对于新手来说,熟悉 Oracle 的 CMD 命令是非常必要的。下面我们将详细介绍 Oracle 常用的 CMD 命令,帮助新手快速了解相关的操作。 一、...

    oracle常用基本命令脚本

    根据提供的文件信息,我们可以归纳总结出以下几个重要的Oracle数据库管理和操作相关的知识点: ### 一、用户管理 #### 1.1 创建用户 ```sql CREATE USER XXX IDENTIFIED BY XXX DEFAULT TABLESPACE tablespaceName...

    oracle 常用命令 TXT 最全的

    - 在Oracle 9i及之后的版本中,很多管理功能已经被SQL*Plus等工具取代。 ### 8. 如何查看Oracle服务器信息 - 可以通过如下命令查看Oracle服务器的信息: - `SELECT machine, terminal FROM V$SESSION;` - 这条...

    oracle常用经典sql查询.rar

    本压缩包“oracle常用经典sql查询.rar”显然是一份关于如何在Oracle环境中高效运用SQL查询的教程资料,适合数据库管理员、开发人员以及对Oracle数据库感兴趣的用户学习。 首先,我们来探讨SQL的基础概念。SQL,全称...

    Oracle常用SQL查询语句

    根据提供的信息,我们可以总结出以下Oracle数据库中常用的SQL查询语句及它们的功能: ### 1. 查询表空间及其总大小 ```sql SELECT t.tablespace_name, ROUND(SUM(bytes / (1024 * 1024)), 0) AS ts_size FROM dba...

    ORACLE常用函数功能演示

    Oracle数据库系统包含了大量的内置函数...总的来说,熟练掌握这些Oracle常用函数,不仅可以提高编程效率,还能优化数据库操作的性能。通过实际的示例和实践,我们可以更好地理解和运用这些函数,提升数据库管理的技能。

    oracle常用函数和类型

    Oracle提供了许多其他功能,如数学函数、转换函数、日期和时间函数、集合函数、聚合函数等,使得数据库操作和查询变得极其灵活和强大。理解并熟练使用这些函数和数据类型是Oracle数据库管理的基础。

Global site tag (gtag.js) - Google Analytics