流水线功能的结果,始终按"写入"或不?

时间:2015-06-15 09:38:18

标签: sql oracle plsql oracle12c

需要重新编号的结果集,例如:

String mainWindowHandle = Driver.CurrentWindowHandle.ToString();
        ReusableFuncPage.GetTxtfirstname().SendKeys(Keys.Enter);           
        Driver.SwitchTo().Window(mainWindowHandle);

问题是:有保证,oracle总会按顺序返回结果吗? :

CREATE OR REPLACE TYPE nums_list IS TABLE OF NUMBER; CREATE OR REPLACE FUNCTION generate_series(from_n INTEGER, to_n INTEGER, cycle_max INTEGER) RETURN nums_list PIPELINED AS cycle_iteration INTEGER := from_n; BEGIN FOR i IN from_n..to_n LOOP PIPE ROW( cycle_iteration ); cycle_iteration := cycle_iteration + 1; IF cycle_iteration > cycle_max THEN cycle_iteration := from_n; END IF; END LOOP; RETURN; END; SELECT * FROM TABLE(generate_series(1,10,3));

或者有时结果可能意外排序,如下:

1 2 3 1 2 3 1 2 3 1

1 个答案:

答案 0 :(得分:1)

  

Pipelining 通过管道行来消除构建大型集合的需要   在创建它们之外的功能,节省内存和允许   后续处理在生成所有行之前开始

pipelined-table-functions

这意味着,它将在完全获取之前开始处理行,这就是您看到不可预测的顺序的原因。