Oracle
Karl_zhujt
工作中积累的点点滴滴,分享给大家,如果有好的建议,请多多指教
展开
-
Oracle 自增序列,前面补0
1.创建序列create sequence seq_nameINCREMENT BY 1 -- 每次加几个START WITH 1 -- 从1开始计数NOMAXVALUE -- 不设置最大值 MAXVALUE 最大值 例如:MAXVALUE 99999NOCYCLE -- 一直累加,不循环 CYCLE 从头开始CACHE 10; -- 预先在内存里面放置一些sequence,存取的较快;cache里面的取完后,oracle自动再取一组到cach原创 2020-09-30 16:51:04 · 1922 阅读 · 0 评论 -
获取间隔时间范围内日期数据的开始时间结束时间
create table A_2( pscode VARCHAR2(12), outputcode VARCHAR2(3), monitortime DATE, processname VARCHAR2(50)); insert into A_2 (pscode, outputcode, monitortime, processname)values ('410100001876', '1', to_date('27-08-2020 14:37:00', 'dd-m.原创 2020-08-27 22:57:17 · 454 阅读 · 0 评论 -
Oracle为用户设置读权限
Oracle 数据库中创建表只读用户,并为其设置密码永不过期、同义词。1.创建用户create user test identified by "123456" default tablespace db temporary tablespace dbTEMP;2.资源授权grant connect,resource to test;3.表授读权限select 'gr...原创 2020-05-07 23:24:36 · 2173 阅读 · 0 评论 -
Oracle raise
异常的抛出 由三种方式抛出异常 1. 通过PL/SQL运行时引擎 2. 使用Raise语句 3. 调用RAISE_APPLICATION_ERROR存储过程 当数据库或PL/SQL在运行时发生错误时,一个异常被PL/SQL运行时引擎自动抛出。异常也可以通过Raise语句抛出Raise exception_name; 显式抛出异常是原创 2011-11-08 17:52:07 · 2197 阅读 · 1 评论 -
Oracle CPU使用情况查询
--发现那些SQL运行了大量的PARSEselect sql_text, parse_calls, executions from v$sqlarea order by parse_calls desc;--SYS的总的PARSE情况select name, value from v$sysstat where name like 'parse count%';--CPU空间及繁翻译 2015-03-04 12:24:32 · 2511 阅读 · 0 评论 -
Oracle分段查询
网上查看分段查询的例子,用的最多的是LAG和LEAD统计函数,Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率。例如:create table TEST( GRADE NUMBER not null, STUID VARCHAR2(4));insert into test (GR翻译 2015-02-07 15:43:57 · 2200 阅读 · 0 评论 -
Oracle的pipelined函数提升数据输出性能
从Oracle 8开始,我们就可以从一个collection类型的数据集合中查询出数据,这个集合称之为“虚拟表“。它的方法是“SELECT FROM TABLE(CAST(plsql_function AS collection_type))”,据说该方法在处理大数据量时会有内存方面的限制。到了Oracle 9i之后,一个称为pipelined表函数的技术被推出来。他和普通的表函数很类似,但还有有转载 2014-03-30 23:21:33 · 730 阅读 · 0 评论 -
ORACLE GUID
GUID 全称Globally Unique Identifier,即全局唯一标识符。 GUID 是由网卡上的标识数字(每个网卡都有唯一的标识号)以及 CPU 时钟的唯一数字生成的的一个128 位(16 字节)的二进制值。它保证对在同一时空中的所有机器都是唯一的,世界上的任何两台计算机都不会生成重复的GUID 值。 GUID 的格式为“xxxxxxxx-xxxx-x转载 2014-03-30 19:57:32 · 1089 阅读 · 0 评论 -
orcle常用语句
--1.创建临时表空间create temporary tablespace AUTOMONITORV5_temptempfile 'D:\ORACLE\KARL\ORADATA\ORCL\AUTOMONITORV5_temp.DBF' size 50m autoextend on next 50m maxsize 10240m extent management lo...原创 2014-09-28 11:26:46 · 1409 阅读 · 0 评论 -
Oracle pragma 举例:exception_init
PRAGMA是一个编译指示(或命令)。编译指示在编译时被处理,它们不在运行时执行。编译指示是对编译程序发出的特殊指令。它也称为伪指令(pseudoinstruction),不会改变程序的含义。它只是向编译程序传递信息 ,实际上它是非常类似于嵌在 SQL 语句的注释中的性能调整提示。 EXCEPTION_INIT:将一个特定的错误号与程序中所声明的异常标示符关联起来。原创 2011-11-08 17:27:00 · 4703 阅读 · 2 评论 -
Oracle获取两个日期相差的小时
项目中求两个日期相差的小时数,用ceil出现小时数据不对,研究ceil(n)函数,发现函数取大于等于数值n的最小整数,这很有可能出现约数问题,经过测试round()函数和to_number()函数相结合,相对与ceil函数精确。原创 2016-09-27 14:34:46 · 10643 阅读 · 0 评论 -
Oracle 提取汉字首字母
工作中需要处理地市行政区划首字母,数据量大概5w多条,如果一个个手工整理,太耗时。在网上找了个函数(地址忘记那个了)很好用,收藏下。CREATE OR REPLACE FUNCTION FUNC_GETPY(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS V_COMPARE VARCHAR2(100); V_RETURN VARCHAR2(4000);...转载 2019-03-28 08:56:13 · 813 阅读 · 0 评论 -
Oracle ROWNUM排序查询数据丢失
问题: 客户反馈,上级用户查询的数据与下级查询的数据对不上。分析: 由于上级用户查询的权限比较大,数据多,不会出现;下级只能查询管辖权限内的数据,而出现问题的多条数据刚好处于分页的最后与下页的开始,猜测可能SQL语句写的有问题。核对SQL语句select * from (select ROWNUM orderby, s.* from...原创 2019-06-13 13:08:09 · 1305 阅读 · 0 评论 -
Oracle exception
Oracle异常处理异常处理是考验一个应用程序健壮性的最好方式,开发人员必须考虑程序中可能出现的各种错误,并进行相应的处理。Oracle中异常分为:1.预定义异常 2.非预定义异常 3.自定义异常三种。一、预定义异常预定义异常是指由PL/SQL所提供的系统异常。当PL/SQL应用程序违反了Oracle规则或出现其它系统限制的情况时,将会隐含地触发一个内部异常。以下是PL/SQL为我们预定义原创 2011-11-11 18:02:24 · 1961 阅读 · 0 评论 -
Oracle nested
Oracle嵌套表的使用一、嵌套表的定义: 嵌套表是表中之表。一个嵌套表是某些行的集合,它在主表中表示为其中的一列。对主表中的每一条记录,嵌套表可以包含多个行。在某种意义上,它是在一个表中存储一对多关系的一种方法。考查一个包含部门信息的表,在任何时间内每个部门会有很多项目正在实施。在一个严格的关系模型中,将需要建立两个独立的表department和project。 嵌套表允许在转载 2011-11-16 16:43:52 · 993 阅读 · 0 评论 -
Oracle 只读事物
一致性读是oracle区别于其他数据库的重要特点之一,但一般来说,这个一致性读是sql级别的,只针对单个sql有效。由于业务逻辑需要,我们可能需要在一个事务中的多个sql也能实现读一致性,也就是说,数据源在事务开始时就定下来了,不受其他会话影响。oracle的只读事务可以实现这个功能,它可以在事务级别上实现读一致性。看下面的实验:SQL> select * from t1;转载 2011-12-01 10:07:52 · 2027 阅读 · 0 评论 -
PL/SQL database character set
提示信息:PL/SQL database character set(AL32UTF8) and Client character set(ZHS16GBK) are different通过命令regedit,打开注册表:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OracleXXXXXX发现:SIMPLIFIED CHINESE_CHINA.ZHS1原创 2014-03-30 18:44:34 · 1501 阅读 · 0 评论 -
oracle 删除重复数据
重复的数据可能有这样两种情况,第一种: 表中只有某些字段一样,第二种是两行记录完全一样。一、对于部分字段重复数据的删除 1.查询重复的数据 select 字段1,字段2, count(*) from 表名 group by 字段1,字段2 having count(*) > 1 例:Select owner from dba_tables group by owne转载 2011-12-01 18:07:02 · 1486 阅读 · 0 评论 -
Oracle dual
dual 是一个系统表,不能删除或者修改其表结构。它的名称叫做“伪表” dual 是一个系统表,不能删除或者修改其表结构。它的名称叫做“伪表”或者 哑表”。查看表结构: SQL> desc dual; Name Type Nullable Default Comments ----- ----------- -------- ----原创 2011-12-01 18:44:07 · 2895 阅读 · 0 评论 -
Decimal赋值DBNull
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms) { if (conn.State != ConnectionState.Open)原创 2011-12-15 09:36:24 · 4298 阅读 · 0 评论 -
sql%found sql%notfound sql%rowcount sql%isopen
在执行DML(insert,update,delete)语句时,可以用到以下三个隐式游标(游标是维护查询结果的内存中的一个区域,运行DML时打开,完成时关闭,用sql%isopen检查是否打开):sql%found (布尔类型,默认值为null)sql%notfound(布尔类型,默认值为null) sql%rowcount(数值类型默认值为0) sql%isopen(布尔类型)原创 2011-11-11 17:55:41 · 2607 阅读 · 0 评论 -
Oracle动态SQL语句
动态SQL返回游标,动态创建临时表原创 2014-10-31 09:31:12 · 1086 阅读 · 0 评论 -
Oracle 分割字符查询
Oracle 分割字符查询select * from view_psbaseinfo where DECODE('410782001125,411100000043', '', NULL, '410782001125,411100000043') IS NULL or PSCODE in原创 2014-07-03 17:06:54 · 2464 阅读 · 0 评论 -
Oracle 用户、角色、权限
Oracle 权限设置一、权限分类:系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。 二、系统权限管理:1、系统权限分类:DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数转载 2011-11-03 17:51:18 · 611 阅读 · 0 评论 -
C#中 Oracle实用随笔
1.在PL/SQL中写SQL语句,习惯性结尾加分号(“;”),但是在C#中写SQL语句不必要加“;”。例如:with data as(……)select * from data;后面加分号了,就报个ORA-00911: 无效字符这样的错误。2.在C#中调用存储过程,常常犯常识错误,下面是正确的使用方式//注意:这里参数名称前面都不能加":"OracleParameter[] p原创 2014-09-24 15:25:00 · 880 阅读 · 0 评论 -
Oracle 11g 透明网关
Oracle11g通过透明网关访问SQLServer2008数据原创 2015-04-24 20:41:15 · 23352 阅读 · 3 评论 -
Oracle pipelined
在plsql开发中,会涉及到一些大数据量表的数据处理,如将某记录数超亿的表的记录经过处理转换插入到另外一张或几张表。 常规的操作方法固然可以实现,但时间、磁盘IO、redo日志等等都非常大。Oracle 提供了一种高级函数,可以将这种数据处理的性能提升到极限。这种函数称为管道函数。 在实际项目中,管道函数会和表函数、数据流函数(即表函数和CURSOR结合)、数据集合、并行转载 2014-03-30 22:50:35 · 1797 阅读 · 0 评论 -
oracle 生成整时数据
SELECT ( to_date('2014-03-28 00:00','yyyy-mm-dd hh24:mi')+ (LEVEL-1)/24) AS MONITORTIME,LEVEL lv FROM DUALCONNECT BY LEVEL <= ROUND((trunc(to_date('2014-03-28 23:00','yyyy-mm-dd h原创 2014-03-27 13:52:19 · 889 阅读 · 0 评论 -
unpivot转多列并包含多个名称
CREATE TABLE T5 (idnum NUMBER,f1 NUMBER(10,5),f2 NUMBER(10,5),f3 NUMBER(10,5),e1 NUMBER(10,5),e2 NUMBER(10,5),h1 NUMBER(10,5),h2 NUMBER(10,5));INSERT INTO T5 (IDNUM,F1,F2,F3,E1,E2,H1,H2) VALUES (1,翻译 2015-04-22 13:50:47 · 5354 阅读 · 0 评论