Oracle 方法
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 方法的更多相关文章
- 完全卸载Oracle方法、步骤
完全卸载Oracle方法: 软件环境: 1.Windows XP + Oracle 10g 2.Oracle安装路径为:d:\Oracle 1.如果数据库配置了自动存储管理(ASM),应该先删除聚集同 ...
- Oracle调用Java方法(上)如何使用LoadJava命令和如何将简单的Jar包封装成Oracle方法
最近在工作中遇到了遇到了一个需求需要将TIPTOP中的数据导出成XML并上传到FTP主机中,但是4GL这方面的文档比较少最终决定使用Oracle调用Java的方法,在使用的过程中发现有很多的坑,大部分 ...
- PLSQL中配置Oracle方法
在服务器上,用PL/SQL连接Oracle数据库时,出现了一个问题,提示: Initialization error Could not load "F:\oracle\bin\oci.dl ...
- 完全卸载Oracle方法
手动卸载 软件环境: 1.Windows XP + Oracle 10g 2.Oracle安装路径为:d:\Oracle 1.如果数据库配置了自动存储管理(ASM),应该先删除聚集同步服务CSS(cl ...
- excel中的数据导入oracle方法
SQL_loader批量上传数据 1. 注释 在工作中,很多时候会遇到如下情况:需要将excel中的数据批量上传到ORACLE表中.如果是小数据量,如几十条至几百条,那么用plsql dev工具 ...
- 重启oracle方法一二三
startup nomount alter database mount alter database open Linux:方法1 用root以ssh登录到linux,打开终端输入以下命令: cd ...
- 大规模数据 从SQL SERVER导入到ORACLE方法
来源于:http://blog.csdn.net/iitkd/article/details/40394789 来源:一个7G的SQL SERVER .bak文件要导入到Oracle中,经过实验,完成 ...
- PLSQL Developer连接远程Oracle方法(非安装客户端)
Oracle比较麻烦,通常需要安装oracle的客户端才能实现.通过instantclient可以比较简单的连接远程的Oracle. 1.新建目录D:\Oracle_Cleint用于存放相关文件,新建 ...
- ASP.NET Excel 导入 Oracle 方法2
先谈思路:前半部分和之前那篇日志的内容是一样的,把Excel数据导入到DataSet中,不同之处在于数据插入的方式: 本方法是拼接 INSERT INTO TABLE VALUES() 字符串,对,就 ...
随机推荐
- (转)iOS Wow体验 - 第三章 - 用户体验的差异化策略
本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第三章译文精选,其余章节将陆续放出.上一篇:Wow ...
- LRU Cache的简单c++实现
什么是 LRU LRU Cache是一个Cache的置换算法,含义是“最近最少使用”,把满足“最近最少使用”的数据从Cache中剔除出去,并且保证Cache中第一个数据是最近刚刚访问的,因为这样的数据 ...
- [CSAPP笔记][第十二章并发编程]
第十二章 并发编程 如果逻辑控制流在时间上是重叠,那么它们就是并发的(concurrent).这种常见的现象称为并发(concurrency). 硬件异常处理程序,进程和Unix信号处理程序都是大家熟 ...
- .Net的PDF转图片
用的是破解版的 O2S.Components.PDFRender4NET.dll 插件, 简单引用即可 public static class PdfToImage { , , ) { try { / ...
- 《第一行代码》学习笔记7-活动Activity(5)
1.Intent中只能指定一个action,但却能指定多个category. 2.使用隐式Intent,不仅可以启动自己程序内的活动,还可以启动其他程序的活动,使得Android应用程序之间 的功能共 ...
- WPF bitmap转bitmapimage 使用 CreateBitmapSourceFromHBitmap内存泄漏
IntPtr f = bmp.GetHbitmap(); img.Source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitm ...
- C#定义委托函数实现在别的窗体中操作主窗体中的SerialPort控件
1.在主窗体(含有serialPort的窗体)中 //先定义委托 public delegate void OpenPort(); public delegate void ClosePort(); ...
- [Leetcode] Merge Sorted Array (C++)
我在Github上新建了一个解答Leetcode问题的Project, 大家可以参考, 目前是Java 为主,里面有leetcode上的题目,解答,还有一些基本的单元测试,方便大家起步. 题目: Gi ...
- paip输入法编程之生活用高频字,以及汉字分级
paip输入法编程之生活用高频字 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax ...
- 【3】创建一个简单的Laravel例子
现在我们来创建一个Laravel的例子来帮助理解 1.首先打开app/Http/routes.php文件,在里边写上一条路由: 2.创建一个控制器,有两种方法 ①在app/Http/Controlle ...