create or replace function fn_test(tablename in varchar2) return number is2 sqls varchar2(100);3 rtn number(10):=0;4 begin5 --获取学生表的记录条数6 --select count(*) into rtn from student;7 8 sqls:=‘select count(*) from ‘ || tablename;9 execute immediate sqls into rtn; 10 dbms_output.put_line(‘记录条数 rtn=‘|| rtn); 11 return(rtn); 12 end fn_test;SQL:1 select fn_test(‘student...
8) not null, -- 客户标示 city_name varchar2(10) not null, -- 所在城市 customer_type char(2) not null, -- 客户类型 ... ) create unique index PK_customers on customers (customer_id) 由于某些原因,客户所在城市这个信息并不什么准确,但是在 客户服务部的CRM子系统中,通过主动服务获取了部分客户20%的所在 城市等准确信息,于是你将该部分信息提取至一张临时表中:SQL 代码create table tmp_cust_city ( customer_id n...
语句来执行动态SQL,语法如下:Excute immediate 动态SQL语句 using 绑定参数列表 returning into 输出参数列表;1)动态SQL是指DDL和不确定的DML(即带参数的DML) 2)绑定参数列表为输入参数列表,即其类型为in类型,在运行时刻与动态SQL语句中的参数(实际上占位符,可以理解为函数里面的形式参数)进行绑定。 3)输出参数列表为动态SQL语句执行后返回的参数列表。 4)由于动态SQL是在运行时刻进行确定的,所以相对于静态而言,其更多...
分页查询是我们在使用数据库系统时经常要使用到的,下文对Oracle数据库系统中的分页查询语句作了详细的介绍,供您参考。Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看。 Oracle分页查询语句基本上可以按照本文给出的格式来进行套用。Oracle分分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <...
) WHERE RN >= 21 其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM <= 40和RN >= 21控制分页查询的每页的范围。 上面给出的这个Oracle分分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM <= 40这句上。 选择第21到40条记录存在两种方法,一种是上面例子中展示的在查询的第二层通过ROWN...
//www.techonthenet.com/oracle/functions/下面开始记录一下,自己在Oracle或者PLSQL常用的几个函数,1、NUMTODSINTERVAL( number, expression )参数说明: number:数字类型的值 expression:单位,这里的单位是固定的,有DAY,HOUR,MINUTE,SECOND举例说明: -- 当前日期加25天 select sysdate, sysdate + numtodsinterval(25, ‘day‘) as res from dual;-- 当前日期加2小时,这里转换了下时间格式,更容易看出来,下图所示 se...
1、NUMTODSINTERVAL( number, expression )参数说明: number:数字类型的值 expression:单位,这里的单位是固定的,有DAY,HOUR,MINUTE,SECOND1 2 3 4 5 6 7 8举例说明: -- 当前日期加25天 select sysdate, sysdate + numtodsinterval(25, ‘day‘) as res from dual; -- 当前日期加2小时,这里转换了下时间格式,更容易看出来,下图所示 select to_char(sysdate, ‘yyyy-MM-dd hh24:mi:ss‘), to_char(sysdate + numtodsin...
--建表FAMILYINFCREATE TABLE FAMILYINFO( FNO NUMBER CONSTRAINT FC001 PRIMARY KEY,--把字段fno约束为主键 FNAME VARCHAR2(20) CONSTRAINT FC002 NOT NULL,--把字段FNAME的约束条件设为“不能为空” SEX VARCHAR2(20) DEFAULT ‘MALE‘CONSTRAINT FC003 CHECK(SEX IN(‘MALE‘,‘FEMALE‘)),--把字段’SEX‘的约束条件设为’性别默认条件下为’MALE‘,如果自己填写只能填写’MALE‘或’FEMALE‘ FAGE NUMB...
CREATE TABLE FAMILYINFO( FNO NUMBER CONSTRAINT FC001 PRIMARY KEY,--把字段fno约束为主键 FNAME VARCHAR2(20) CONSTRAINT FC002 NOT NULL,--把字段FNAME的约束条件设为“不能为空” SEX VARCHAR2(20) DEFAULT ‘MALE‘CONSTRAINT FC003 CHECK(SEX IN(‘MALE‘,‘FEMALE‘)),--把字段’SEX‘的约束条件设为’性别默认条件下为’MALE‘,如果自己填写只能填写’MALE‘或’FEMALE‘ FAGE NUMBER, REL V...
1.正则判断,适用于10g以上版本 --非正整数 select 字段 from 表 where regexp_replace(字段,‘\d‘,‘‘) is not null; --非数值类型 select 字段 from 表 where regexp_replace(字段,‘^[-\+]?\d+(\.\d+)?$‘,‘‘) is not null; --2.自定义函数,判断非值类型 create or replace function isnumber(col varchar2) return <a href="https://www.baidu.com/s?wd=integer&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Ydm...
(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2) WHERE子句中的连接顺序.: ORACLE采用自...
/*2 for循环打印1到103 */4 5 set serveroutput on;6 7 declare8 9 begin 10 for i in 1..10 loop 11 dbms_output.put_line(i); 12 13 end loop; 14 15 end; 16 / while循环 1 /*2 打印数字1 ~ 103 */4 5 set serveroutput on;6 7 declare8 9 num number := 1; 10 11 12 begin 13 14 while num <= 10 loop 15 dbms_output.put_line(num); 16 num := num +1; 17 end loop; 18 19 end; 20...
转载:http://www.cnblogs.com/djcsch2001/articles/1823459.html 索引,索引的建立、修改、删除 索引索引是关系数据库中用于存放每一条记录的一种对象,主要目的是加快数据的读取速度和完整性检查。建立索引是一项技术性要求高的工作。一般在数据库设计阶段的与数据库结构一道考虑。应用系统的性能直接与索引的合理直接有关。下面给出建立索引的方法和要点。3.5.1 建立索引1. CREATE INDEX命令语法: CREATE INDEXCREATE [unique...
①在使用SELECT语句查询时,不要用“*”代替所有列名,因为这样的写法对Oracle系统来说会存在解析的动态问题。Oracle系统会通过查询数据字典来将“*”转换成表的所有列名,这自然会消耗系统时间。②在子查询中,[NOT] IN子句将执行一个内部的排序与合并,无论在那种情况下,[NOT] IN都是最低效的,因为他对子查询中的表执行了一个全表遍历。为了提高效率,我们可以把它改写成外连接、NOT EXISTS 或者 EXISTS 子句。③驱动表是指被最...
1.查看总消耗时间最多的前10条SQL语句 select * from (select v.sql_id, v.child_number, v.sql_text, v.elapsed_time, v.cpu_time, v.disk_reads, rank() over(order by v.elapsed_time desc) elapsed_rank from v$sql v) a where elapsed_rank <= 10; 2.查看CPU消耗时间最多的前10条SQL语句 select * from (select v.sql_id, v.child_number, v.sql_text, v.elapsed_time, v.cpu_time, v.disk_reads, rank() ove...