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() 字符串,对,就 ...
随机推荐
- 初识前端HTML
HTML 超文本标记语言 HTML的解析 顾名思义,HTML就是由一个个的标签组成的,组成后,HTML可被浏览器直接识别以及处理成我们想给用户展示的样子. 下面我们就来解析HTML的一个个标签. &l ...
- AngularJs学习笔记1——入门知识
1.什么是AngularJs AngularJs 诞生于2009年,由Misko Hevery 等人创建,后被Google收购,是一个优秀的Js框架,用于SPA(single pag ...
- XMPP通讯开发-服务器好友获取以及监听状态变化
在 XMPP通讯开发-好友获取界面设计 我们设计了放QQ的列表功能,这里我们获取我们服务器上的 数据. 这一部分知识我们可以查看smack_3_3_0/smack_3_3_0/documentat ...
- java 图片 批量 压缩 +所有压缩
/* oldsrc : 原图片地址目录 如 'd:/' newsrc : 压缩后图片地址目录 如 'e:/' widthdist,heightdist : 压缩后的宽和高 ...
- 如何把java代码转换成smali代码
1.概述 Smali是Android系统中Dalvik虚拟机指令语言,在apk逆向过程中有许多工具可以把smali代码转化成java代码.但是在学习Smali语法的过程中,有时候需要进行java代码和 ...
- AngularJS初步
AngularJS特点 遵循AMD规范 不需要操作节点 对于jquery,一般是利用现有完整的DOM,然后在这戏Dom的基础上进行二次调教了:而对于AngularJS等框架则是根据数据模型以及其对应用 ...
- CentOS管理
1.使用yum安装和卸载软件 主要功能是更方便的添加/删除/更新RPM包. 它能自动解决包的倚赖性问题. 它能便于管理大量系统的更新问题 一.yum list|more 列 ...
- WebApi2官网学习记录--HttpClient Message Handlers
在客户端,HttpClient使用message handle处理request.默认的handler是HttpClientHandler,用来发送请求和获取response从服务端.可以在clien ...
- 拉姆达表达式(Lambda Expressions)
上面两种写法是一样的 ,拉姆达表达式也是一种委托, 但引用的是匿名方法
- VPN错误789:L2TP连接尝试失败
VPN 错误789:l2tp 连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到一个处理错误 Windows配置VPN,选择“使用IPsec的第2层隧道协议(L2TP/IPSec)”时, XP系 ...