PIPELINED(關(guān)鍵字)表明這是一個管道函數(shù),管道函數(shù)的返回值類型必須為集合,在函數(shù)中,PIPE ROW語句被用來返回該集合的單個元素,函數(shù)則以一個空的RETURN語句結(jié)束,以表明它已經(jīng)完成。
|
在sql*plus中執(zhí)行該函數(shù),大家需要首先設(shè)置arraysize為1,否則服務(wù)器會按照默認(rèn)的15來向客戶端返回信息,這會影響我們的測試效果。
|
11 rows selected.
如果要在pipeline中執(zhí)行DML操作,則必須使用自治事務(wù),否則會報ORA-14551錯誤
|
在Oracle 9205及其之后的版本中,在pipeline function中使用自治事務(wù),則必須在pipe row之前提交或者回滾事務(wù),否則會報ORA-06519錯誤。
|
此處是由于在9205中修復(fù)Bug 2711518導(dǎo)致了自治事務(wù)的行為有所改變。如果系統(tǒng)從9205之前的版本升級到之后的版本,需要保證pipeline function的行為和以前版本一致,Oracle提供了一個10946事件來設(shè)置和以前版本的兼容性,如果在管道函數(shù)中使用了select for update的cursor,則必須設(shè)置event回歸以前的特性,否則即使在pipe row之前commit也會導(dǎo)致出現(xiàn)ORA-1002錯誤。
|
新聞熱點(diǎn)
疑難解答
圖片精選