随笔分类 - Oracle
摘要:EXECUTE IMMEDIATE 代替了以前Oracle8i中DBMS_SQL package包.它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EXECUTE IMMEDIATE的目标在于减小企业费用并获得较高的性能,较之以前它相当容易编码.尽管DBMS_SQL仍然可用,但是推荐使用EXECUTE IMMEDIATE,因为它获的收益在包之上。-- 使用技巧1. EXECUTE IMMEDIATE将不会提交一个DML事务执行,应该显式提交如果通过EXECUTE IMMEDIATE处理DML命令,那么在完成以前需要显式提交或者作为EXECUTE
阅读全文
摘要:row_number() over(partition by column1 order by column2 desc) rn 用法这里的column2是必须的,特殊情况下可以使用rowid,提高效率
阅读全文
摘要:Postgres 格式化函数提供一套有效的工具用于把各种数据类型(日期/时间,int,float,numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成原始的数据类型。注意:所有格式化函数的第二个参数是用于转换的模板。表 5-7. 格式化函数 函数返回描述例子to_char(timestamp, text)text把 timestamp 转换成 stringto_char(timestamp 'now','HH12:MI:SS')to_char(int, text)text把 int4/int8 转换成 stringto_char(125,
阅读全文
摘要:1功用将数字的小数部分截去,返回整数。2语法TRUNC(number,num_digits)Number 需要截尾取整的数字。Num_digits 用于指定取整精度的数字。Num_digits 的默认值为 0。3说明函数 TRUNC 和函数 INT 类似,都返回整数。函数 TRUNC 直接去除数字的小数部分,而函数 INT 则是向下舍入到最接近的整数。函数 INT 和函数 TRUNC 在处理负数时有所不同:=TRUNC(-5.6) 结果是其整数部分(-5)=INT(-5.6) 结果是向下舍入后的整数部分(-6)1.TRUNC(for dates)TRUNC函数为指定元素而截去的日期值。其具体的
阅读全文
摘要:1 ORACLE锁的类型 在正常情况下,ORACLE会自动锁住需要加锁的资源以保护数据, 这种锁是隐含的,叫隐含锁。然而,在一些条件下,这些自动的锁在 实际应用时并不能满足需要,必须人工加一些锁。这些人工加的锁叫 显示锁。 下面指明了会产生隐含锁的SQL语句: INSERT; UPDATE; DELETE; DDL/DCL语句。 下面指明了会产生显示锁的SQL语句: SELECT FOR UPDATE; LOCK TABLE IN XXX MODE。在同时对表进行以上操作的时候,就有可能会产生锁 减...
阅读全文
摘要:1,查看dblinks:2,create a dblink:create database link link_name connect to username identified by password using ' (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.194.27)(PORT = 1521)) ) (CONNECT_DATA = (SID = stddb2) ) )';the parts of red ,we can find ...
阅读全文
摘要:现场如下:有表A(ID,CODE,C....C1,C2,C3),300W数据。C1,C2,C3是空的B(ID,CODE,C.....C1,C2,C3),1万数据现在要将A表中的C1到C3几个字段通过关联查询B表更新。自己尝试了几个方案:不仅速度慢,还容易报错:ORA-01555: 快照过旧: 回退段号 6352 (名称为 "_SYSSMU6352_1445123658$") 过小方案1:直接关联查询更新:MERGE INTO YTRUT.T_RUT_WAYBILL_SUM AUSING (SELECT K.CODE, K.MANAGEMENT_AREA, ...
阅读全文
摘要:SQL中Case的使用方法 Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数CASEsex WHEN'1'THEN'男'WHEN'2'THEN'女'ELSE'其他'END --Case搜索函数 CASEWHENsex='1'THEN'男'WHENsex='2'THEN'女'ELSE'其他'END这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限
阅读全文
摘要:index range scan(索引范围扫描):1.对于unique index来说,如果where 条件后面出现了 ,between ...and...的时候,那么就可能执行index range scan,如果where条件后面是=,那么就会执行index unique scan。2.对于none unique index来说 如果where 条件后面出现了=,>, create table test as select * from dba_objects;表已创建。SQL> create unique index ind_id on test(object_id); in
阅读全文
摘要:ORCLAE 给已经存在的数据增加默认值;ALTER TABLE XXX MODIFY XXX DEFAULT XXX;ALTER TABLE TABLE_NAME DROP COLUMN COLUMN_NAME;ALTER TABLE TABLE_NAME ADD COLUMN COLUMN_NAME VARCHAR2(10) DEFAULT 'ANDY';COMMENT ON COLUMN TABLE_NAME.COLUMN_NAME IS 'XXXXXX';
阅读全文
摘要:create table mytable (id number(2),name varchar2(5))--------------------------DECLAREflag NUMBER(2);BEGINSELECT 1 INTO flag FROM mytable WHERE ID = 12;IF flag = 1 THEN dbms_output.put_line('记录12存在');ELSE dbms_output.put_line('记录12不存在');END IF;END;这段匿名块可能报2个错误ORA-01403: 未找到任何数据ORA-065
阅读全文
摘要:通过bulk collect减少loop处理的开销采用bulk collect可以将查询结果一次性地加载到collections中。而不是通过cursor一条一条地处理。可以在select into,fetch into,returning into语句使用bulkcollect。注意在使用bulk collect时,所有的into变量都必须是collections.举几个简单的例子:--在select into语句中使用bulk collectDECLARETYPE SalList IS TABLE OF emp.sal%TYPE;sals SalList;BEGIN-- Limit the
阅读全文
摘要:Oracle Minus关键字 SQL中的MINUS关键字 SQL中有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果中。如果有的话,那这一笔记录就被去除,而不会在最后的结果中出现。如果第二个SQL语句所产生的结果并没有存在于第一个SQL语句所产生的结果内,那这笔资料就被抛弃,其语法如下: [SQL Segment 1] MINUS [SQL Segment 2]这两个结果集结构一致才有意义。--------------------------------------------//创建表1create...
阅读全文
摘要:Merge是一个非常有用的功能,类似于Mysql里的insert into on duplicate key.Oracle在9i引入了merge命令,通过这个merge你能够在一个SQL语句中对一个表同时执行inserts和updates操作. 当然是update还是insert是依据于你的指定的条件判断的,Merge into可以实现用B表来更新A表数据,如果A表中没有,则把B表的数据插入A表. MERGE命令从一个或多个数据源中选择行来updating或inserting到一个或多个表语法如下MERGE INTO [your table-name] [rename your table h
阅读全文
摘要:Truncate是SQL中的一个删除数据表内容的语句,用法是:语法TRUNCATE TABLE name参数name是要截断的表的名称或要删除其全部行的表的名称。下面是对Truncate语句在MSSQLServer2000中用法和原理的说明:Truncate table 表名 速度快,而且效率高,因为: TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE T
阅读全文
摘要:对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章,通过文氏图 Venn diagrams 解释了SQL的Join。我觉得清楚易懂,转过来。假设我们有两张表。Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录name是相同的,如下所示:让我们看看不同JOIN的不同A表idname1Pirate2Monkey3Ninja4SpaghettiB表idname1Rutabaga2Pirat
阅读全文
摘要:SELECT * FROM ALL_TABLES;查询所有表;SELECT SYSDATE FROM DUAL;查询系统时间;to_date() 与 to_char() 日期和字符串转换 to_date("要转换的字符串","转换的格式") 两个参数的格式必须匹配,否则会报错。即按照第二个参数的格式解释第一个参数。to_char(日期,"转换格式" ) 即把给定的日期按照“转换格式”转换。转换的格式:表示year的:y 表示年的最后一位 yy 表示年的最后2位 yyy 表示年的最后3位 yyyy 用4位数表示年表示month的:mm
阅读全文
浙公网安备 33010602011771号