
PL/SQL
launch_225
与电脑良好沟通~~~
展开
-
常用的PL/SQL开发原则
(1)广泛使用绑定变量,特别是批量绑定,因为这可以有效的避免sql的硬解析和PL/SQL引擎和SQL引擎的上下文切换!(2)广泛使用UROWID来处理DML语句(UROWID是ROWID扩展,ORACLE推荐使用UROWID来替代ROWID)(3)在你的存储过程中谨慎使用DDL语句(create、alter、drop、truncate等),因为这可能会破坏你的transaction的连续性转载 2012-08-05 18:43:12 · 731 阅读 · 0 评论 -
用Forall与bulk collect快速复制表数据
本文中介绍的几种写法分别是从代码的简易性,FORALL和bulk collect的使用,以及分批插入这三方面考虑得出的,大家可以根据自己的需要灵活选择。 三种不同的写法: 1.使用了BULK COLLECT,没有使用FORALL, 一次性插入,分批COMMIT,这种方法比较适用于10万以下条数据的表; create or replace procedure cp_data2 as转载 2012-08-05 20:29:59 · 813 阅读 · 0 评论 -
ORACLE批量绑定FORALL与BULK COLLECT
FORALL与BULK COLLECT的使用方法:1.使用FORALL比FOR效率高,因为前者只切换一次上下文,而后者将是在循环次数一样多个上下文间切换。 2.使用BLUK COLLECT一次取出一个数据集合,比用游标条取数据效率高,尤其是在网络不大好的情况下。但BLUK COLLECT需要大量内存。 例子:Sql代码 create table tes转载 2012-07-30 11:50:23 · 713 阅读 · 0 评论 -
oracle Authid Current_User
我在一些技术论坛里面,常常看到有朋友问这种问题: 为什么我的用户具有DBA权限,却无法在存储过程里面创建一张普通表呢? 下面就结合具体案例来谈谈这个问题: SQL> conn eric/eric;Connected.SQL> select * from dba_role_privs where grantee='ERIC';GRANTEE转载 2012-07-30 12:35:07 · 775 阅读 · 0 评论 -
pl/sql exit和return
1.exit只能用于循环中,并且退出循环往下执行2.return可用于循环或非循环,并且退出整个begin..end块不往下执行SQL> begin 2 if 1=1 then 3 dbms_output.put_line('第'||i||'次循环'); 4 --return; 5 exit; 6 end if; 7 dbms_output.原创 2012-09-17 15:33:31 · 8234 阅读 · 0 评论 -
bulk collect forall通过limit批量提交
declare type forall_table is table of tb1%rowtype;test_table forall_table;cursor c1 is select * from infores_nb1.tb1 a where exists (select 1 from infores_nb1.t2 b whe原创 2012-10-19 09:33:31 · 1041 阅读 · 0 评论