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() 字符串,对,就 ...
随机推荐
- ajax提交写法
<script> /* ajax提交写法 */ function add_prize() { // var query={}; var query = new Object(); quer ...
- GitHub上可能用到的开源
AGi18n :https://github.com/angelolloqui/AGi18n 可以简单地本地化你的iOS app,从代码和XIB文件中提取文本转化成可本地化的字符串,且不会改变XIB文 ...
- JavaScript 公有 私有 静态属性和方法
1.公有属性和公有方法 这里的 name age 都是参数传递进去 可以在外面直接实例化调用. 2.私有属性和方法 私有的只能在函数内部使用 作用域的原因 3.静态属性和静态方法 这里我首先 创建 ...
- Javascript基础Function
函数声明与表达式 function someFunc(){ alert("这是一个函数"); } var func=function(){ alert("函数表达式&qu ...
- css Reset文件
/* KISSY CSS Reset 理念:清除和重置是紧密不可分的 特色:1.适应中文 2.基于最新主流浏览器 维护:玉伯(lifesinger@gmail.com), 正淳(ragecarrier ...
- EF中的约定
优先级:Fluent API >数据注释>约定 CodeFirst约定 主键约定 如果类的属性名为"ID"(不区分大小写)或类名的后面跟有"ID", ...
- node-sqlite3-API-归纳总结
SQLITE3-API-LIST:API1. new sqlite3.Database(filename,[mode],[callback]) 返回数据库对象并且自动打开和连接数据库 它没有独立打开数 ...
- NSString 使用小结
http://blog.csdn.net/ms2146/article/details/8654148
- Session与Cookie间不得不说的一些事
在很久很久以前,刚有浏览器和网页的时候,web开发者发现了一个问题,我必须要在客户端这边保存一些东西才能实现某些功能,比如大家喜闻乐见的购物车.用户登录.自动登陆等.但是客户端只有一个浏览器,怎么在用 ...
- Android成长记(1)-----android环境搭建与adb shell 命令
整理一下学习android一步一步存下来的自己总结或是从网上摘抄的比较不错的文档,电脑要上交了,最舍不得的就是自己积累的这么点东西了,所以决定发布到黎梓小站,以供大家一起学习以及自己日后忘记了也有地方 ...