PL/SQL开发
bulk collect是可以看做是一种批获取的方式,在我们的plsql的代码段里经常作为into的扩展来使用。对于select id into v from .... 是一个常用的用法。不过这里只能是返回单条记录的时候,才能使用,如果是有多条记录我们就不能用这样的方式,而是使用fetch和循环的方式,不仅使用麻烦,而且性能也底下,这时我们的bulk collect隆重登场了,解决我们的问题。
通过bulk collect可以把我们的查询结果一次性地加载到我们的嵌入表中。这样我们不需要很麻烦的用游标的循环一条一条的去fetch叻,可想而知,这样不仅操作方便,也可以获得相当不错的程序性能。 我们可以在select into, fetch into, returning into的句子中使用。下面我们通过对以上各个例子来进行演示来看看他们的用法
先来看看我们的测试表和数据
SQL> desc test;
Name Null? Type
----------------------------------------- -------- ----------------------------
ZC_CODE VARCHAR2(20)
MONEY NUMBER(35)
MONEY_2 NUMBER(35)
SQL> col zc_code format a20;
SQL> col money format 999999.99;
SQL> col money_2 format 9999.99;
SQL>select * from test;
ZC_CODE MONEY MONEY_2
-------------------- ---------- --------
201 18600.00
20101 9600.00
2010101 3300.00
2010102 3200.00
2010103 3100.00
20102 9000.00
2010201 2000.00
2010202 7000.00
8 rows selected.
定义我们的嵌套表的类型, 定义在一个package里,这个package使我们的数据类型集合
SQL> create or replace package ALL_DATA_TYPE is
2 type T_TESTROW is table of test1.test%rowtype index by binary_integer;
3 type T_TESTZCCODE is table of test1.test.zc_code%type index by binary_integer;
4 end;
5 /
先来个select into的例子
SQL> create or replace function test_bulkcollect return ALL_DATA_TYPE.T_TESTROW is
2 v_rtn ALL_DATA_TYPE.T_TESTROW;
3 begin
4 select * bulk collect into v_rtn from test;
5 return v_rtn;
6 end;
7 /
统一的测试方法, 我们分别用这个测试代码来演示以上select into,fetch into和r
相关文档:
---//创建分区
CREATE PARTITION FUNCTION MarketInfo_Bak_partfunc(int)
AS RANGE RIGHT
FOR VALUES (10000,25000,40000)
--//创建分区架构
CREATE PARTITION SCHEME MarketInfo_Bak_partscheme
AS PARTITION MarketInfo_Bak_partfunc
TO (fg1, fg2, fg3, fg4) --//fg1...fg4文件组名
--//对表进 ......
一、使用参数化输入。存储过程里尽量避免语句拼接。
二、对于一些数据库,必须设置权限,甚至设置到字段。
三、始终通过测试类型、长度、格式和范围来验证用户输入。
四、过滤敏感字符。
Function ReplaceStr(Str)
Str=Trim(Str)
Str=Replace(Str,"'","'")
Str=Replace(Str,";",";")
Str=Rep ......
--> Title : SQL Server查詢可用磁盘空间
--> Author : wufeng4552
--> Date : 2009-10-30 09:59:09
前言
如果你的组织拥有的程序要求一个很大量的磁盘空间或者大比例的特定磁盘,那么确保在程序开始或者关键点时确认磁盘驱动器具有足够的存储。一次快速检查就可以节约大量的时间,减 ......
这是一个CSDN Oracle开发版块里,网友问过的一道题
题如下
create table A_TEST
(
PAYOUT_ITEM_CODE VARCHAR2(30) not
null,
FORMULA_DET VARCHAR2(1000)
)
create table B_TEST
(
ELEMENT_ID VARCHAR2(5) not null,
NAME VARCHAR2(41)
)
求写oracle多个字符替换(有测试数据)
inser ......
SUBSTRING
返回字符、binary、text 或 image 表达式的一部分。有关可与该函数一起使用的有效 Microsoft® SQL Server ......