1、递归

 select zxdept
from (select d.id, d.zxdept, d.RANK, d.fatherId
from web_dept d
start with d.id = --获取18022部门层级
and d.SHOWFLAG =
connect by PRIOR fatherId = id) temp
where temp.rank <=
order by rank asc

结果:

1 分析及投后管理
2 财务部
3 财务部
4 管理中心

2、列拼接成行 wm_concat()

 select replace(wm_concat(zxdept), ',', '/') as 部门名称
from (select zxdept
from (select d.id, d.zxdept, d.RANK, d.fatherId
from web_dept d
start with d.id = 18022--获取18022部门层级
and d.SHOWFLAG = 1--可用
connect by PRIOR fatherId = id) temp
where temp.rank <= 4--四级以内
and temp.rank >= 1--大于等于一级
order by rank asc)

结果:管理中心/财务部/财务部/分析及投后管理

3、获取最新分组内所有一条记录

select *
from ( --以 orderno 分组,查找分组内最新一条工作流日志
select t.*,
row_number() over(partition by orderno order by FORTIME desc) rn
from (select *
from WORKFLOW_INSTANCE_LOG
where orderno in (select to_char(ID) as id
from HR_DIMISSION
where USERCODE = 'B143130'
and (FLAGSAVE = 2 or FLAGSAVE = 9) -- 离职单
union all
select to_char(ID) as id
from HR_ConFirm
where USERCODE = 'B143130'
and FLAGSAVE = 2 -- 转正单
union all
select to_char(ID) as id
from HR_Transposal
where USERCODE = 'B143130'
and FLAGSAVE = 2 -- 调岗单
)) t)
where rn = 1

 4、insert into select union all ORA-02287

insert into OA_VOTE_QUESTIONNAIRE
(ID, TYPE, FATHERID, SERIALNUMBER, ITEMTITLE, QUESTIONTYPE)
select OA_VOTE_QuestionnaireID.Nextval,
2,
target.FATHERID,
target.SERIALNUMBER,
target.ITEMTITLE,
target.QUESTIONTYPE
from (select 0 FATHERID,
1 SERIALNUMBER,
'您离职的主要原因是:' ITEMTITLE,
4 QUESTIONTYPE
from dual --第一大题
union all
select (select max(temp.id)
from OA_VOTE_QUESTIONNAIRE temp
where temp.type = 2
and temp.fatherid = 0) FATHERID,
1 SERIALNUMBER,
'薪酬福利较低' ITEMTITLE,
4 QUESTIONTYPE
from dual) target

 5、转换成NVARCHAR2 类型:

Translate('ssdsdsd' USING NCHAR_CS);

6、insert when EXISTS then into:

insert when EXISTS
(select *
from view_Rep_holiday
where id = 'QJ151012_003'
and holidaytype = 13) then into timecard
(cardno, username, thisdate, entryexit, clientid)
select '', username, dateend, '', ''
from view_Rep_holiday
where id = 'QJ151012_003'
union all
select '', username, datestart, '', ''
from view_Rep_holiday
where id = 'QJ151012_003';

 7、oracle ORA-00911: 无效字符

语句放在plsql中执行没问题 ,但是程序始终报错,解决办法:去掉sql结尾的分号(;)。

 8、获得时间差:ROUND(TO_NUMBER(END_DATE - START_DATE)) --默认相减的结果以天为单位,如果需要精确到小时、分、秒,则计算下即可;

eg:ROUND(TO_NUMBER(END_DATE - START_DATE)*24*60)

 9、ORacle 迁移:

  (1)安装 ORAcle server版本,安装完成,登录http://172.0.0.1:1158/em ,添加表空间(表空间和老数据库相同,避免不必要的麻烦),添加用户,并为用户赋予角色(conect,DBA,resource)和权限(这个根据需求,太           多就不一一列,建议先全部添加,然后移除);

(2)导入数据库中的队列、再导入备份。

  导入备份如果有报错则继续下面步骤:

  (3)依次导入导入类型、导入trigger,导入view,导入fun和proc;

  ps:本人在实际中碰到字段如果是这个类型—>BINARY_FLOAT,系统会提示没有导入成功(详细可以查看导入日志),此时需要对先导入标结果然后根据下面方法插入数据。
    如果操作失败,数据混乱,可以把库删除重来,但是不需要卸载oracle,这样会更快写修复问题。

  第一步、创建dblink:    

create public database link Link_ltcs
connect to 用户名 identified by 密码
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 服务器地址)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = 数据库实例名称)
)
)';
eg:
create public database link Link_09
connect to ltg identified by longtugame123
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.200.9)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = OADB)
)
)';

 

 第二步、导数据:

insert into 本地表 select * from 远端数据库表@link_ltcs.regress.rdbms.dev.us.oracle.com

10、类型转换导致查处数据被截断

  PAYEEACCOUNT NVARCHAR2(100)

  原始值是 :测试人

  经过 cast(PAYEEACCOUNT as NVARCHAR2(100) )的结果为:测

11、oracle表空间使用情况查询(转载的)

select a.tablespace_name, total, free, total-free as used, substr(free/total * 100, 1, 5) as "FREE%", substr((total - free)/total * 100, 1, 5) as "USED%" from
(select tablespace_name, sum(bytes)/1024/1024 as total from dba_data_files group by tablespace_name) a,
(select tablespace_name, sum(bytes)/1024/1024 as free from dba_free_space group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
order by a.tablespace_name;

 12、oracle10g 定期导出数据

1、

/*设置导出路径并赋予权限*/
create or replace directory exp as 'D:\OA\DataBaseBack';
grant write on directory exp to public;
grant read on directory exp to public;

2、创建 文件名.bat

@echo off
Set OrclSid=数据库
Set ExpUser=登录名
Set ExpPass=密码
Set SysDate=%date:~0,4%-%date:~5,2%-%date:~8,2%.%time:~0,2%%time:~3,2% @echo * * * * * * * * * * * * * * * * * * * *
@echo * * * * * * * * * * * * * * * * * * * *
@echo * * * * * ORACLE 数据库导出 * * * * * *
@echo * * * * * * * * * * * * * * * * * * * *
@echo * * * * * * * * * * * * * * * * * * * * @echo 服务名 = %OrclSid%
@echo 用户名 = %ExpUser%
@echo 密 码 = %ExpPass%
@echo 时 间 = %SysDate% expdp %ExpUser%/%ExpPass%@%OrclSid% directory=exp dumpfile=%ExpUser%~%OrclSid%_%SysDate%.dmp logfile=%ExpUser%~%OrclSid%_%SysDate%.log /*倒入*/
IMPDP USERID='用户/密码@sid' schemas=倒入用户 directory=exp table_exists_action=replace dumpfile=2017-07-24.DMP

3、添加系统系统计划;

 13、oracle 中使用order等关键字作为列操作:

insert into Api_beisen_postInformation(OId,OIdTalentCriterion,Name,OIdResourceSet,StartDate,StopDate,\"Order\",OIdJobLevel,EstablishDate,Description,Score,JobPostKey,JobPostSecret,JobRequirements,Code,OIdJobGradeLow,OIdJobGradeHigh,OIdJobSequence,OIdProfessionalLine) values(:OId,:OIdTalentCriterion,:Name,:OIdResourceSet,:StartDate,:StopDate,:\"ORDER\",:OIdJobLevel,:EstablishDate,:Description,:Score,:JobPostKey,:JobPostSecret,:JobRequirements,:Code,:OIdJobGradeLow,:OIdJobGradeHigh,:OIdJobSequence,:OIdProfessionalLine)

注意:参数必须大写::\"ORDER\"

14、Function中拼接sql写逻辑:

CREATE OR REPLACE FUNCTION FN_DEPTstaffcount (dept_ number , dq number) return number is stffs int;
sql_str VARCHAR2(4000);
begin
sql_str := 'select count(1) from web_admin wa join (select temp.id from web_dept temp where temp.showflag=1 start with temp.id='||dept_||' connect by prior temp.id=temp.fatherid) temp1
on wa.zxdept=temp1.id and wa.isvirtual=0 join web_admin_work temp2 on wa.usercode=temp2.usercode where wa.isvirtual=0 and temp2.rank>0';
if dq>0 then
sql_str:=sql_str||' and exists(select 1 From web_admin_work waw where wa.usercode=waw.usercode and waw.adress=to_char('||dq||'))';
end if;
execute immediate sql_str into stffs ;
return stffs;
end;

Oracle 方法的更多相关文章

  1. 完全卸载Oracle方法、步骤

    完全卸载Oracle方法: 软件环境: 1.Windows XP + Oracle 10g 2.Oracle安装路径为:d:\Oracle 1.如果数据库配置了自动存储管理(ASM),应该先删除聚集同 ...

  2. Oracle调用Java方法(上)如何使用LoadJava命令和如何将简单的Jar包封装成Oracle方法

    最近在工作中遇到了遇到了一个需求需要将TIPTOP中的数据导出成XML并上传到FTP主机中,但是4GL这方面的文档比较少最终决定使用Oracle调用Java的方法,在使用的过程中发现有很多的坑,大部分 ...

  3. PLSQL中配置Oracle方法

    在服务器上,用PL/SQL连接Oracle数据库时,出现了一个问题,提示: Initialization error Could not load "F:\oracle\bin\oci.dl ...

  4. 完全卸载Oracle方法

    手动卸载 软件环境: 1.Windows XP + Oracle 10g 2.Oracle安装路径为:d:\Oracle 1.如果数据库配置了自动存储管理(ASM),应该先删除聚集同步服务CSS(cl ...

  5. excel中的数据导入oracle方法

    SQL_loader批量上传数据 1.    注释 在工作中,很多时候会遇到如下情况:需要将excel中的数据批量上传到ORACLE表中.如果是小数据量,如几十条至几百条,那么用plsql dev工具 ...

  6. 重启oracle方法一二三

    startup nomount alter database mount alter database open Linux:方法1 用root以ssh登录到linux,打开终端输入以下命令: cd ...

  7. 大规模数据 从SQL SERVER导入到ORACLE方法

    来源于:http://blog.csdn.net/iitkd/article/details/40394789 来源:一个7G的SQL SERVER .bak文件要导入到Oracle中,经过实验,完成 ...

  8. PLSQL Developer连接远程Oracle方法(非安装客户端)

    Oracle比较麻烦,通常需要安装oracle的客户端才能实现.通过instantclient可以比较简单的连接远程的Oracle. 1.新建目录D:\Oracle_Cleint用于存放相关文件,新建 ...

  9. ASP.NET Excel 导入 Oracle 方法2

    先谈思路:前半部分和之前那篇日志的内容是一样的,把Excel数据导入到DataSet中,不同之处在于数据插入的方式: 本方法是拼接 INSERT INTO TABLE VALUES() 字符串,对,就 ...

随机推荐

  1. 升级IOS9,提示滑动升级,卡在password锁屏界面,无反应了

    注:升级之前一定要把锁屏password取消掉 若遇上述问题.可通过进入DFU 模式解决 进入DFU具体步骤.(进入成功后,屏幕为全黑) 注:在进入DFU操作时务必与电脑连接好数据线. 1.按住pow ...

  2. FileZilla简单介绍及运用

    一.FileZilla简介 FileZilla是一款免费开源的FTP客户端软件,并且还提供了服务器版本.虽然它是免费软件,可性能却一点也不含糊,比起那些共享软件来有过之而无不及,具备大多数的FTP软件 ...

  3. Layer中自定义属性的动画

    转载自:http://blog.jobbole.com/69211/ 默认情况下,CALayer 及其子类的绝大部分标准属性都可以执行动画,无论是添加一个 CAAnimation 到 Layer(显式 ...

  4. 今天上传公司服务器出现的.net framework版本错误问题

    今天做好一个网站(.net4.0),里面有静态页面也有aspx页面,发布后,满心欢喜的上传到服务器,运行后,静态页没有问题,可是通过导航栏一旦点击进入aspx页面,就会出现错误 ,提示web.conf ...

  5. Invalid content was found starting with element 'taglib'”

    今天在使用struts-menu制作菜单,在web.xml中写入 <taglib>      <taglib-uri>/WEB-INF/struts-menu.tld</ ...

  6. IIS报500.0错误

    IIS安全里面配置:Everyone.IUSR.IIS_IUSRS 参考地址:http://blog.chinaunix.net/uid-21375345-id-3213631.html

  7. NPOI导入导出Excel (2)

    简单演示一下创建一个Workbook对象,添加一个工作表,在工作表中添加一行一列: using System;using System.Collections.Generic;using System ...

  8. Linux上安装JDK

    1.下载rpm文件并安装 rpm -ivh jdk-7u51-linux-x64.rpm 2.修改/etc/profile文件,增加以下配置 export JAVA_HOME=/usr/java/jd ...

  9. 操作html标签之找到标签

    引入 丰富多彩的html标签构成了网页.例如p,div,li,ul,a......…….它们都有自己默认的样式,且各不一样,例如h1标签就比p标签的margin要大一些.我们学习css的目的是为了改变 ...

  10. 分治算法求乘方a^b 取余p(divide and conquer)

    传统的计算方法为循环n个a相乘.时间复杂度为O(n). 如用分治算法,效率可提升至O(lgn). 结合recursive有 double pow(int a, int n){ ) ; ) return ...