outputRow()
processRow() メソッドに対する各呼び出しの後、outputRow() メソッドが定義されている場合は、それが NULL を返すまで呼び出されます。これにより、UDTF は何行でも効率的に出力できます。
outputRow() メソッドを呼び出す際に指定するパラメーターは常に 1 つで、それは processRow() メソッドの呼び出し以降に outputRow() が呼び出された回数です。
outputRow() を processRow() と組み合わせて使用した例を以下に示します。processRow() メソッドが最初に呼び出され、x の値を rows_to_output 変数に格納します。その後、データベースは、outputRow() メソッドを、それが NULL を返すまで呼び出します。最初の呼び出しで rownum 引数は値 1 を持ち、2 番目の呼び出しで値 2 を持つというようになります。
function processRow(x)
rows_to_output = x
return null
end
function outputRow(rownum)
if rownum > rows_to_output then
return null
end
return { rownum }
endoutputRow() メソッドが NULL を返すと、データベースは処理対象である次のデータ行を指定して再度 processRow() メソッドを呼び出します。outputRow() メソッドは、processRow() メソッドで許可されているのとまったく同じフォーマットでデータを返す必要があります。
たとえ processRow() メソッドが結果を返したとしても、outputRow() メソッドは、processRow() メソッドへの各呼び出しの後にまだ呼び出されます。例:
function processRow(x)
rows_to_output = x
return { 0 }
end
function outputRow(rownum)
if rownum > rows_to_output then
return null
end
return { rownum }
end