CREATE OR REPLACE FUNCTION DMSYS.blastn_align (
query_sequence IN CLOB,
seqdb_cursor blast_cur.seqdbcur_t,
subsequence_from IN INTEGER DEFAULT 1,
subsequence_to IN INTEGER DEFAULT -1,
filter_low_complexity IN INTEGER DEFAULT 0,
mask_lower_case IN INTEGER DEFAULT 0,
expect_value IN NUMBER DEFAULT 10,
open_gap_cost IN INTEGER DEFAULT 5,
extend_gap_cost IN INTEGER DEFAULT 2,
mismatch_cost IN INTEGER DEFAULT -3,
match_reward IN INTEGER DEFAULT 1,
word_size IN INTEGER DEFAULT 11,
xdropoff IN INTEGER DEFAULT 30,
final_x_dropoff IN INTEGER DEFAULT 50
)
RETURN dmbaos AUTHID CURRENT_user
PARALLEL_ENABLE(PARTITION seqdb_cursor BY ANY)
PIPELINED USING dmbanimp;
我看到这样一段代码,看不懂了,我平时写的都是
这个格式:
create function tt(ss int)
return decimal
is
begin
.......
.....
return ..
end tt;
谁能告诉我那段红色的代码是什么意思?
query_sequence IN CLOB, --如果中间的in/out不写,默认为in
seqdb_cursor blast_cur.seqdbcur_t, --后面的是自定义类型,属于blast_cur包
subsequence_from IN INTEGER DEFAULT 1, --default:这个参数为可选参数,若不填写,默认为1。下同
subsequence_to IN INTEGER DEFAULT -1,
filter_low_complexity IN INTEGER DEFAULT 0,
mask_lower_case IN INTEGER DEFAULT 0,
expect_value IN NUMBER DEFAULT 10,
open_gap_cost IN INTEGER DEFAULT 5,
extend_gap_cost IN INTEGER DEFAULT 2,
mismatch_cost IN INTEGER DEFAULT -3,
match_reward IN INTEGER DEFAULT 1,
word_size IN INTEGER DEFAULT 11,
xdropoff IN INTEGER DEFAULT 30,
final_x_dropoff IN INTEGER DEFAULT 50
)
RETURN dmbaos AUTHID CURRENT_user --AUTHID CURRENT_user:调用该函数时使用当前登录用户的权限。dmbaos:自定义类型
PARALLEL_ENABLE(PARTITION seqdb_cursor BY ANY) --PARALLEL_ENABLE:可以并行执行该函数。PARTITION seqdb_cursor BY ANY:指出输入行可被分割为任意数量的数据桶,然后便可对其进行并行处理
PIPELINED USING dmbanimp; --PIPELINED:可以递增返回数据集
并行管线函数(parallel pipelined function),即Oracle能动态地并行执行存储函数。根据2楼提供的链接地址指出,从oracle8.0开始可以从集合或者虚拟表中查询数据,到8i的时候很流行这样处理,但是这些集合和虚拟表需要耗费大量的内存,而并行管线函数提出后节省了这种内存消耗,它是便构建边返回结果,就像管道一样将数据一条条送给你,比传统的游标快捷多了。举个例子说,一个查询结果要等5秒返回,传统是等5秒得到所有结果,用了并行管线函数就是实时的返回结果,5秒内不停地给你记录。大概的作用就是这样吧。具体还是看oracle官网讲的详细,还有例子。