ChinaUnix.net
相关文章推荐:

oracle 11g 利用PLSQL创建表空间

oracle11g新增的SQL缓存结果集的功能前面已经介绍过了。同时oracle对PL/SQL的函数也进行了相应的增加。允许函数缓存返回结果。 先看一个简单的例子: SQL> CREATE TABLE T AS SELECT * FROM DBA_SOURCE; 创建。 SQL> CREATE OR REPLACE FUNCTION F_NO_RESULT_CACHE RETURN NUMBER AS 2 V_RETURN NUMBER; 3 BEGIN 4 SELECT COUNT(*) INTO V_RETURN FROM T; 5 RETURN V_RETURN; 6 END; 7 / 函数已创建。 SQL> SET TIMING ON SQL>...

by copyking - 存储文档中心 - 2008-07-16 10:28:41 阅读(921) 回复(0)

磁盘阵列

相关讨论

上一篇介绍了11gplsql函数缓存结果。这里简单说明一下RESULT_CACHE和DETERMINISTIC函数的区别。 如果了解DETERMINISTIC功能,会发现DETERMINISTIC函数和RESULT_CACHE有功能类似之处。两种方法在函数输入相同的时候,都可以避免函数的再次执行。不过二者的实现方式不同,所以现出来的很多特点也不相同。 DETERMINISTIC函数的主要意义是告诉oracle,当这个函数输入的参数确定时,输出也是确定的。而oracle利用了这个功能,因此在...

磁盘阵列

by copyking - 存储文档中心 - 2008-07-16 10:27:42 阅读(1116) 回复(0)

上两篇介绍了11gplsql函数缓存结果,以及RESULT_CACHE和DETERMINISTIC的区别。 这里简单介绍一下利用函数缓冲结果来提高性能的具体例子。前面的例子中都是读取的数据,如果一些复杂的函数是被重复调用的,即使这些函数并没有访问数据库中的,也是可以通过RESULT_CAHCE来获取性能的提升的。 前一段时间实现过一个利用PL/SQL进行大数据量的运算的功能。由于要计算100的阶乘,最终的结果超过了oracle的number类型的上限。为了解...

磁盘阵列

by copyking - 存储文档中心 - 2008-07-16 10:25:47 阅读(1075) 回复(0)

以前取SEQUENCE的NEXTVAL和CURRVAL只能通过SQL语句,现在可以在PL/SQL中通过赋值语句获取: SQL> CREATE SEQUENCE S_ID; 序列已创建。 SQL> SET SERVEROUT ON SQL> DECLARE 2 V_ID NUMBER; 3 BEGIN 4 V_ID := S_ID.NEXTVAL; 5 DBMS_OUTPUT.PUT_LINE(V_ID); 6 END; 7 / 1 PL/SQL 过程已成功完成。 这种方法比使用SELECT INTO要方便,更重要的是,由于不执行SQL语句,这种方式的效率更高。 SQL> CREATE SEQUENCE S_1; 序列已创建。 S...

磁盘阵列

by copyking - 存储文档中心 - 2008-07-16 10:21:43 阅读(712) 回复(0)

oracle11g推出了一个新的数据类型SIMPLE_INTEGER,这种数据类型示-2147483648到2147483647,这个数据类型不为空。 对于这个数据类型,oracle就不会进行空的判断,也不会处理溢出的情况。因此oracle可以将这个数据类型的操作直接作用于硬件,从而提高性能。 下面简单对比一下NUMBER类型和SIMPLE_INTEGER类型的性能差别: SQL> SHOW PARAMETER plsql_CODE_TYPE NAME TYPE VALUE ------------------------------------ ----------- ...

磁盘阵列

by copyking - 存储文档中心 - 2008-07-16 10:20:44 阅读(696) 回复(0)

oracle在调用函数的时候可以将调用过程直接替换为子查询的代码,这样可以避免在运行过程中调用开销,oracle提供了一个新的PRAGMA INLINE来指示函数是否进行INLINE优化: SQL> CREATE OR REPLACE FUNCTION F_TEST (P_IN IN NUMBER) RETURN NUMBER AS 2 BEGIN 3 IF P_IN > 1 THEN 4 RETURN P_IN + F_TEST(P_IN - 1); 5 ELSE 6 RETURN 1; 7 END IF; 8 END; 9 / 函数已创建。 SQL> CREATE OR REPLACE FUNCTION F_TEST_INLINE (P_IN I...

磁盘阵列

by copyking - 存储文档中心 - 2008-07-16 10:19:47 阅读(737) 回复(0)

11g中对于触发器部分有了一定的增强,主要现在两个方面。一个是对触发器的触发顺序可以进行控制。另一个是可以定义一个复合触发器。 这一篇首先介绍一下触发器的顺序控制。 在11g以前,oracle的文档上一直是这样描述的:oracle是不会保证同种类型的触发器的触发先后顺序。不过在测试中发现,oracle似乎是根据触发器建立时间的先后决定触发顺序的: SQL> CREATE TABLE T (ID NUMBER, NAME VARCHAR2(30)); 创建。 SQL> CREATE ...

磁盘阵列

by copyking - 存储文档中心 - 2008-07-16 10:18:54 阅读(671) 回复(0)

11g中对于触发器部分有了一定的增强,主要现在两个方面。一个是对触发器的触发顺序可以进行控制。另一个是可以定义一个复合触发器。 上一篇介绍了触发器的触发顺序,这一篇来介绍一下复合触发器。复合触发器中可以包括BEFORE STATEMENT、BEFORE EACH ROW、AFTER EACH ROW和AFTER STATEMENT四个部分,将四种类型的触发器集成在一个触发器中,如果需要多个类型的触发器配合使用,采用复合触发器会显得逻辑更加清晰,而且不容易出现...

磁盘阵列

by copyking - 存储文档中心 - 2008-07-16 10:16:41 阅读(638) 回复(0)

oracle11g中对于动态sql也做了很多功能性的增强。 其中最明显的一个增强就是EXECUTE IMMEDIATE和DBMS_SQL包的PARSE都支持CLOB字段作为输入。这就彻底解决了EXECUTE IMMEDIATE语法不支持32k以上sql语句的限制。同时DBMS_SQL包对于32k以上SQL的处理也得到了简化。 首先建立一张大,建语句的长度超过32k。建语句没有必要列出来,这里就省略了: SQL> SELECT DBMS_LOB.GETLENGTH(DBMS_METADATA.GET_DDL('TABLE', 'T...

磁盘阵列

by copyking - 存储文档中心 - 2008-07-16 10:15:17 阅读(764) 回复(0)

11g中PL/SQL新增了很多特性,在性能和易用性方面做了不少的提升,还有一些功能性的增强。 这篇介绍一下plsql的函数指定参数调用和CONTINUE语句。 首先提一下函数的指定参数的调用。 在11g以前,如果一个函数在SQL中被调用的话,那么不能通过指定参数的方式。如果一个函数有10个输入参数,前面9个都可以使用默认值,只有最后一个需要指定,在11g以前,如果函数在SQL中使用,那么必须把前面9个参数补齐。没有办法通过指定参数的方法调...

磁盘阵列

by copyking - 存储文档中心 - 2008-07-16 10:12:53 阅读(761) 回复(0)

oracle数据库可以将系统空间创建在文件系统上,而数据文件创建在 裸设备上吗?

by 深圳菜鸟 - Oracle - 2003-03-15 19:20:59 阅读(2028) 回复(4)