2016-10-10 5 views
0

カーソルの長さはどのように知ることができますか?私はそのような何かをする必要がありPL/SQL上のカーソルの長さを知るには

For i in (select * from table) 
loop 
    x := i.length 
end loop; 

私が意味する、私は長さを取る必要があります。

これはPL/SQLで考えられますか? これを実行する方法はありますか?

ありがとうございます。

+0

なぜ?あなたが解決しようとしている問題は何ですか?クエリが0行を返す場合、または最初の行またはn行ごとに何かを行う場合は、最終的に返される行の数を知る必要はありません。クエリが0行を返す場合を除いて、 'count(*)'解析関数は(コストをかけて)動作します。この場合、ループはまったく反復しません。それが懸念されているかどうかはわかりません。 –

答えて

0

カーソル自体に長さを教える方法はありません。 Oracleは、すべての行をフェッチした後まで、その長さを認識しません。

これはパフォーマンスヒットになると思いますが、このように、カーソルのSQLで行うことができます。

For i in (select t.*, count(*) over (partition by null) cursor_length from table t) 
loop 
    x := i.cursor_length; 
end loop; 
関連する問題