摘要:1.查询时,同时使用rownum和order by 排序字段 desc比单独使用rownum速度快查询语句中使用rownum时,最好也同时使用order by 排序字段 desc比如:select receivedmessageid,messageid,length,xcom.convert_blob_to_varchar(bufferdata) as bufferdata,processflag,receivedlogtime,destinationfrom XCOM.V_RECEIVED_UNPROCESS twhere rownum=1 and LENGTH<=4000的执行速度接
阅读全文
摘要:打开Dev PL/Sql Developer的命令窗口,然后进行如下操作命令代码 SQL>SELECTobject_name,s.username,s.sid,s.serial#,p.spid,to_char(s.logon_time,'yyyy-mm-ddhh24:mi:ss')logon_time2FROMv$locked_objectl,dba_objectso,v$sessions,v$processp3WHEREl.object_id=o.object_id4ANDl.session_id=s.sid5ANDs.paddr=p.addr;OBJECT_NAMEU
阅读全文
摘要:最近index job出现失败,于是尝试手动执行试试。收到了ORA-00054的错误消息。 一、错误消息 SQL> ALTER INDEX ESMDBA.ESM_PRCS_ERR_IDX1 rebuild; ALTER INDEX ESMDBA.ESM_PRCS_ERR_IDX1 rebuild * ERROR at line 1: ORA-00054: resource busy and acquire with NOWAIT specified二、查看当前数据库中当前锁定对象 SQL> col OBJECT_NAME for a30 SQL> colusername fo
阅读全文
摘要:1、正则表达式中的元字符元字符意思例子\说明要匹配的字符是一个特殊字符、常量或者后者引用。(后引用重复上一次的匹配)\n 匹配换行符\\ 匹配 \\( 匹配 (\) 匹配 )^匹配字符串的开头位置如果A是字符串的第一个字符,^A 匹配 A$匹配字符串的末尾位置如果B是字符串的最后一个字符,$B 匹配 B*匹配前面的字符0次或多次ba*rk可以匹配 brk、bark、baark等等+匹配前面的字符1次或多次ba+rk可以匹配 bark、baark等等,但是不能匹配brk,也就是说,最少有以一次。?匹配前面的字符0次或1次ba?rk可以匹配 bark、brk等等,但是不能匹配baark。{n}匹配
阅读全文
摘要:今天要在字段里查找'%',涉及到oracle的转义字符,现总结如下: SQL> select * from test;TEST--------------------sdd_kkd'ddfsfsadffa%asfs123451%23451%543212%54321%%54321A&B已选择9行。 其中包含特殊的字符分别为%,_,&,有可能包含这些字符的数据含有错误,或者需要查找包含这些字符的数据。SQL> select * from test where test like 'sdd _%' escape ' '
阅读全文
摘要:数据库视图是表的一个延伸对象。从理论上来说,在视图上使用DML语句对数据进行更新,最终都会在基础表上完成。也就是说,可以通过视图对基础表的内容进行修改。但是,往往没有这么简单。若想在连接视图上执行DML修改语句的话,需要严格的遵守一些限制。否则的话,DML语句不会执行成功。假设现在人事管理系统中有三个表,一个是员工基本信息表,包含员工编号(非空)、员工姓名(非空)、身份证号码等字段;第二个表是企业部门职位表包含职位编号(非空)、职位名称(非空)、职位描述等字段;第三个是员工与部门职位对应表,包含员工编号(非空)、职位编号(非空)、描述等字段。现在数据库管理员做了一张视图,查询员工编号、员工姓名
阅读全文
摘要:Oracle 提供了三种集合:联合数组、嵌套表和 VARRAY 数组,但有的工具或语言并不支持 Oracle 的这种集合处理,所以有时你不得不将集合中的数据插入到真正的表中,然后再使用 SQL 查询出这些数据。对于这样的功能,你可以使用 table() 函数来实现。 table() 函数使你可以将集合封装成一个伪表,然后在 SQL 的 from 后面像一个表似的来查询,就像 from 后面可以跟一个子查询一样。下面用嵌套表举几个例子:1. 创建测试表 SQL> create table test_yct( id number(2), names tnt_names )2 nested t
阅读全文
摘要:F.1 字符函数——返回字符值 这些函数全都接收的是字符族类型的参数(CHR 除外)并且返回字符值.除了特别说明的之外,这些函数大部分返回VARCHAR2类型的数值.字符函数的返回类型所受的限制和基本数据库类型所受的限制是相同的,比如: VARCHAR2数值被限制为2000字符(ORACLE 8中为4000字符),而CHAR数值被限制为255字符(在ORACLE8中是2000).当在过程性语句中使用时,它们可以被赋值给VARCHAR2 或者CHAR类型的PL/SQL变量.lCHR语法:chr(x)功能:返回在数据库字符集中与X拥有等价数值的字符。CHR和ASCII是一对反函数。经过CHR转换后
阅读全文
摘要:本函数可以将“目标字符串”以“指定字符串”进行拆分,并通过表结构返回结果。代码如下: CREATE OR REPLACE TYPE str_split IS TABLE OF VARCHAR2 (4000); CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHAR2, p_delimiter IN VARCHAR2) RETURN str_split PIPELINED AS v_length NUMBER := LENGTH(p_string); v_start NUMBER := 1; v_index NUMBER; BEGIN WH
阅读全文
摘要:.net2.0访问Oracle--与SqlServer的差异,注意事项,常见异常(1)在.net平台下访问数据库有以下几种方式:1、OleDB数据库访问程序, 2、ODBC数据库访问程序, 3、专有的数据库访问程序。如:访问Sql Server 2000 时,我们一般喜欢使用专有的SQL Server .NET Framework 数据库访问程序。命名空间为: System.Data.SqlClient 。 在这里我使用第三种,也就是“专有的数据库访问程序”(Oracle .NET Framework 数据库访问程序)访问Oracle数据库 在1.1版本之前 Oracle .NET Frame
阅读全文
摘要:转自:http://blog.sina.com.cn/s/blog_4bda1bf3010007pn.html常见错误: 1、“调用 '存储过程名称' 时参数个数或类型错误” 出现错误的原因是因为你的创建OracleParameter 是使用的参数名称与存储过程或Sql语句中定义的参数名称不一致。另外,也要注意,虽然在Sql 语句中使用冒号“:”代表参数,但在创建OracleParameter时,指定的参数名称不能使用冒号,在newOracleParameter时,ParameterName只能使用参数的字符部分。 2、“存储过程名称' 不是过程或尚未定义”Oracle
阅读全文
摘要:1.调用 '存储过程名称' 时参数个数或类型错误[1]仔细核对了C#在调用存储过程时传递的参数个数和参数类型,参数个数和参数类型都和存储过程的声明一致;然后直接在PL/SQL Developer进行跟踪调试,也没发现问题,找不到出错原因,于是头大了。[2]网上查找原因,有说在存储过程的参数变量声明后加上default null,试了不行[3]最终找到一篇文章说可能调用时的参数名称和存储过程中的参数名称不一致,于是检查了一下C#中新建参数时的代码:创建参数数组 OracleParameter[]param=newOracleParameter[]{newOracleParamet
阅读全文
摘要:构建测试表:Sql代码 createtableTABLE1 ( IDINTEGER, NAMEVARCHAR2(10) ) createtableTABLE2 ( IDINTEGER, ROLEVARCHAR2(10) ) insertintoTABLE1(ID,NAME)values(1,'张三'); insertintoTABLE1(ID,NAME)values(2,'李四'); commit; insertintoTABLE2(ID,ROLE)values(1,'查询'); insertintoTABLE2(ID,ROLE)values(1
阅读全文
摘要:1.create or replace function postgresql(p_tname varchar2, p_colname varchar2)return clob isv_tmp varchar2(200);v_result clob;v_cum sys_refcursor;beginopen v_cum for 'select ' || p_colname || ' from ' || p_tname;loop fetch v_cum into v_tmp; exit when v_cum%notfound; v_result := v_resu
阅读全文
摘要:Start with...Connect By子句递归查询一般用于一个表维护树形结构的应用。创建示例表:CREATE TABLE TBL_TEST( ID NUMBER, NAME VARCHAR2(100 BYTE), PID NUMBER DEFAULT 0);插入测试数据:INSERT INTO TBL_TEST(ID,NAME,PID) VALUES(''''1'''',''''10'''',''''0''
阅读全文
摘要:SQL> select version from v$instance;VERSION-----------------10.2.0.1.0SQL> SQL> create table IDTABLE2 (3 id number,4 val varchar2(20)5 )6 ;Table createdSQL> SQL> insert into IDTABLE (ID, VAL)2 values (10, 'abc');1 row insertedSQL> insert into IDTABLE (ID, VAL)2 values (10,
阅读全文
摘要:0. 上周最后天SQL>select trunc(to_date('2009-05-14 15:19:12','YYYY-MM-DD HH24:MI:SS'),'D')-1 from dual;1.上月末天:select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from dual;2.上月今天SQL> select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToda
阅读全文
摘要:1.日期函数(1)字符转日期to_date()举例: select to_date('2002-08-26','yyyy-mm-dd') from dual;(2)日期转字符to_char()举例:(3)add_months()(4)months_between()(5)last_day()举例:select last_day(sysdate) from dual;(6)对值进行截断trunc()○截断数字,格式:TRUNC(n1,n2),n1表示被截断的数字,n2表示要截断到那一位。n2可以是负数,表示截断小数点前。注意,TRUNC截断不是四舍五入。举例:se
阅读全文
摘要:oracle中数据类型number(m,n)中m表示的是所有有效数字的位数,n表示的是小数位的位数。m的范围是1-38,即最大38位。 1> .NUMBER类型细讲:Oracle number datatype 语法:NUMBER[(precision [, scale])] 简称:precision --> p scale --> sNUMBER(p, s)范围: 1 <= p <= 38, -84 <= s <= 127 保存数据范围: -1.0e-130 <= number value < 1.0e+126 保存在机器内部的范围: 1
阅读全文