
Oracle开发
F1na1E
这个作者很懒,什么都没留下…
展开
-
Oracle sqlplus中执行SQL脚本 Error SP2-0310
在SQLPLUS环境下,可以使用@path的方式来执行SQL脚本但是我尝试了多次,最后都是这个错误后来将path中的’D:\oracle scripts’修改成‘D:\oracle_scripts’,脚本执行成功原创 2017-06-20 11:11:33 · 5952 阅读 · 0 评论 -
两篇关于Oracle中后台进程中CKPT描述得比较好的文章
http://www.cnblogs.com/czjie/archive/2011/11/21/2258151.html http://space.itpub.net/24005010/viewspace-694408留个记录,改日整理。转载 2018-01-30 13:21:16 · 361 阅读 · 0 评论 -
记录一次ORA-01722的Bug
问题如下: 错误代码为 ora-01722,无效数字 经排查后是因为有一个字段的数据类型为char(1),存得是”1”和”0”,假设该字段名为A。 我在取where条件时写法:A=1; 规范的写法应该是:A=’1’; 但是据我了解,Oracle是在比较数据时,存在隐式转换的机制 以下是我查资料后得到的说明: “When comparing a character value with原创 2018-01-16 00:46:05 · 451 阅读 · 0 评论 -
通过SQL比较两张表的异同
当两张表结构相同的时候,但是需要比较表内容是否相同,可以通过( A - B ) U ( B - A ) 结果集如果为空则相等,否则不等。 具体SQL: (select n1,n2,n3 from A minus select n1,n2,n3 from B) union (select n1,n2,n3 from B minus select n1,n2,n3 from A);原创 2018-01-04 22:14:12 · 5973 阅读 · 1 评论 -
用来观察执行时间的function
create function get_date_to_date ( i_date1 in date, i_date2 in date ) return varchar2 is v_var varchar2(200); v_min number; begin v_min := trunc((i_d原创 2017-12-08 10:19:13 · 276 阅读 · 0 评论 -
Oracle DB Link简单使用
DB Link是一种单向的连接 例如 在A库新建了一个B库的DB Link,不代表会在B库出现一个同样的DB Link 查找某个schema下 DB Link的语句select * from dba_db_links使用DB Link的语句create table tab_test as select * from schema.tab_name@db_linkname注意:create原创 2017-12-08 10:14:03 · 400 阅读 · 0 评论 -
SQL中处理分母为0的方式
在报表的开发中常常会出现除法运算,在除法计算中需要注意分母可能为“0”,可以使用以下方法避免Oracle的报错a/b当b=0时,会报错a/b = round(decode(b,0,0,a/b),4)||'%'原创 2017-11-28 10:26:15 · 8167 阅读 · 0 评论 -
Oracle中Exists和in的异同
概念: EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False EXISTS 指定一个子查询,检测行的存在。执行方式: Exists: 通过使用EXISTS,Oracle会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间。 In: Oracle在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在一个加了原创 2017-12-11 10:58:17 · 329 阅读 · 0 评论 -
Oracle迅速取到一个表的所有列的列名的方法
我比较懒,但是又不愿意使用select * from table的方式去获取某个表中所有的列,尤其是在insert into中常常需要使用如此,因此偷懒记录如下方法select * from user_tab_cols c where c.table_name like upper('%表名%') order by c.column_id;再通过excel批量加上“,”,减少了在plsql原创 2017-11-16 14:59:28 · 3502 阅读 · 0 评论 -
Oracle中的替换函数replace和translate函数
1.translate 语法:TRANSLATE(char, from, to) 用法:返回将出现在from中的每个字符替换为to中的相应字符以后的字符串。 若from比to字符串长,那么在from中比to中多出的字符将会被删除。 三个参数中有一个是空,返回值也将是空值。 举例:select translate('abcdefga','abc转载 2017-11-21 10:05:22 · 4807 阅读 · 0 评论 -
Oracle for update/for update of/update的用法和区别
1.select * from Table for update –锁定表的所有行,只能读不能写 2.select * from Table where pkid = 1 for update –根据where条件,只锁定pkid=1的行 3.select * from Table a join Table b on a.pkid=b.pkid for update – 锁定两个表的所有行 4原创 2017-10-24 15:48:52 · 1874 阅读 · 0 评论 -
Ora-08103
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2017-09-20 21:43:08 · 1938 阅读 · 0 评论 -
SQLLDR CTL文件
TemplateLOAD DATAINFILE "C:/your file name.csv" // 数据文件名+路径txt或者csv格式into TABLE tab_sqlldr// 目标表名append // 插入数据的方式 有append/insert/replace/truncate// APPEND 原先的表有数据 就加在后面 // INSER原创 2017-06-26 16:24:28 · 7841 阅读 · 1 评论 -
create table as select 和 create table 再insert into select 的差异
从一个表到另一个表导入大量数据的时候可以选择create table nologging parallel 64 as select 的结构导入同时删除目标表的索引这样的效率是最高的原因:insert into select 是需要将数据写入databuffer cache中的,再刷入磁盘。而ctas的方式则是跳过了数据缓冲区,则是写到磁盘上,直接路径读写方式。海量数据原创 2017-07-18 11:13:35 · 883 阅读 · 0 评论 -
oracle hint
select /*+index(t idx_object_id)*/object_name from t where object_id=29;强制走indexselect /*+full(t)*/object_name from t where object_id=29强制走全表原创 2017-07-17 13:27:09 · 278 阅读 · 0 评论 -
Oracle根据多个字段进行查重
根据两个字段去重 (a,b)select * from tab t where (t.a, t.b) in (select t1.a, t1.b from tab t1 group by (t1.a, t1.b) having count(*) > 1原创 2017-07-14 17:16:56 · 2439 阅读 · 0 评论 -
Oracle中查询最近修改的数据对象
使用的数据字典表是 user_objectsselect t.OBJECT_NAME, t.OBJECT_TYPE, t.LAST_DDL_TIME from user_objects t原创 2017-07-03 16:33:30 · 1724 阅读 · 0 评论 -
最近使用到的函数/概念
row_number() over()lead() over()dba_source视图在PL/SQL中追踪报错 dbms_output.put_line(dbms_utility.format_error_backtrace);or not existsexception too_many_rows留个记号,有空详细补充...原创 2018-01-30 13:26:06 · 354 阅读 · 0 评论