现在位置: 首页 > 数据库 > 文章
2017年07月29日 数据库 ⁄ 共 2224字 ⁄ 阅读 1,694 次
规范类 在存储过程开始前,应该存储过程说明注释,如: Oracle PL/SQL /* Description: Created By: Date: Version: Modified By: Date: Reason: Version: Tables&Description: */ 12345678910111213 /*Description:Created By:Date:Version: Modified By:Date:Reason:Version: Tables&Description:*/ ...
阅读全文
2017年07月29日 数据库 ⁄ 共 927字 ⁄ 阅读 1,496 次
数组的概念在Oracle的PL/SQL语言中是复合数据类型,PL/SQL有两种复合数据结构:记录和集合。记录由不同的域组成,集合由不同的元素组成。 一般来讲,记录是多维元素(多维数组,多列变量),只能存储一行多列数据不能存储多行多列数据,只能单行赋值,即一次只能赋一个值否则会报too_many_rows的异常;而集合是一维元素(一维数组,单列变量),可以一次性将多个值赋入而不会报too_many_rows的异常。 想使用多行多列数组则需要...
阅读全文
2017年07月19日 数据库 ⁄ 共 890字 ⁄ 阅读 2,045 次
在PLSQL中写存储过程时,在很多情形下使用序列会报错,ORA-02287此处不允许序号。出现这种情况后,一般的处理方法是给SQL再加一个外层用序列。为了了解到底哪个地方使用序列时报错,可以了解一下使用序列的限制。 Restrictions on Sequence Values You cannot use CURRVAL and NEXTVAL in the following constructs: 在以下情形中,你不能使用序列的currval和nextval值: A subquery in a DELETE, SELECT, or UPDATE statement ...
阅读全文
2017年07月18日 数据库 ⁄ 共 680字 ⁄ 阅读 1,300 次
类似Windows一样,在Oracle数据库中也有类似回收站的存在。我们drop一张表,但其实并未在物理上删除这张表。有时为了节省服务器磁盘空间,我们就需要在drop表时在其后加上purge选项。而在多用户时,当drop表频繁,为了管理回收站空间我们可以单独使用purge命令来回收空间。若用户表极大,超过了回收站的最大限制则会被oracle直接删除还不会存在回收站中。需要注意,PURGE语句不能回滚,清除以后也不可再恢复。 查看回收站中的内...
阅读全文
2016年06月03日 数据库 ⁄ 共 6119字 ⁄ 阅读 2,208 次
【对象信息】 查看表:user_tables、all_tables、dba_tables 查看表字段:user_tab_columns、all_ tab_columns、dba_tab_columns 查看表注释:user_ tab_comments 、all_tab_comments、dba_tab_comments 查看字段注释:user_col_comments、all_col_comments、dba_col_comments 查看索引信息:user_indexes、all_indexes、dba_indexes 查看索引所在字段:user_ind_columns、all_ind_columns、dba_ind_columns 查看约束信息:user...
阅读全文
2016年05月20日 数据库 ⁄ 共 752字 ⁄ 阅读 2,412 次
新建三个存储过程,分别使用动态SQL、绑定变量、静态SQL三种编程方式,然后进行实验比较。 【创建存储过程】 Oracle PL/SQL --动态SQL create or replace procedure proc1 as begin for i in 1 .. 100000 loop execute immediate 'insert into t values (' || i || ')'; commit; end loop; end proc1; --动态SQL绑定变量 create or replace procedure proc2 as begin f...
阅读全文
2016年05月19日 数据库 ⁄ 共 818字 ⁄ 阅读 3,132 次
【不负责总结】 1、regexp_like功能强大,但效率比like要差; 2、若使用like的字段上无索引,且匹配字符串前后都有%,则instr效率高; 3、若使用like的字段上有索引,且匹配字符串前后都有%,若仅操作索引字段则like效率高,若有其他字段则instr效率高,可能的原因是仅操作索引字段不会全表扫描而是采用全索引扫描; 4、若使用like的字段上有索引,且仅匹配字符串结尾有%,则like效率高,因为like使用到了索引,而instr会造成索...
阅读全文
2016年04月21日 数据库 ⁄ 共 2057字 ⁄ 阅读 3,935 次
最近需要从A库将数据导到B库,A库使用的是Oracle 10g,B库使用的是Oracle 11g,本地未安装数据库服务。 【EXP导出失败】 最开始想使用EXP导出数据,结果在使用11g导出10g数据时会报错“EXP-00008: 遇到 ORACLE 错误 904”。错误原因是,Oracle只向下兼容,也就是必须使用10g及以前版本才能导出。为导数据,将本地数据库更换或在其他电脑新装10g的时间成本较高,且可能有未知困难(WIN7操作系统和Oracle 10g数据库之间不兼容),故...
阅读全文
2016年04月17日 数据库 ⁄ 共 1722字 ⁄ 阅读 1,600 次
【游标定义】 SQL游标是一种能从包含多条记录的结果集中每次提取一条记录的机制,是系统为用户分配的内存中一处数据缓冲区,用于临时存储从数据库中提取的数据块或指向数据行存储位置的指针。 为什么使用游标? 1)数据处理需要,SELECT语句返回多条记录,不可用SELECT INTO将数据写入变量,此时需要用到游标,方便对数据进行逐条处理。 2)提升性能,游标会将数据提取到内存中,这样在使用时就可避免频繁请求数据库。然而,若...
阅读全文
2016年04月16日 数据库 ⁄ 共 3268字 ⁄ 阅读 5,237 次
【动态SQL定义】 动态SQL是指在PL/SQL块中,可以根据不同参数拼接不同的SQL字符串,即执行前不能确定该SQL是什么(如表名、字段名或条件值未知)。 【动态SQL与静态SQL区别】 1)静态SQL是确定的,在执行前已经完成编译(随PL/SQL块一起完成了编译),执行时数据库直接执行编译好的SQL;而动态SQL是不确定的,是在程序运行时才编译并执行(不随PL/SQL块编译时编译)。 2)静态SQL一次编译,多次调用,使用相同的执行计划。动态S...
阅读全文