提供された検索文字列で制限される指定済のSQL問合せを実行し(オプション)、各列の値を戻します。すべての列値は、元のデータ型に従って戻されます。検索列は、p_search_column_no
パラメータに列番号を指定することによって識別されます。このファンクションでは、アプリケーションに定義されている「文字の値の比較」グローバリゼーション属性が考慮されます。
構文
APEX_PLUGIN_UTIL.GET_DATA2 ( p_sql_statement IN VARCHAR2, p_min_columns IN NUMBER, p_max_columns IN NUMBER, p_data_type_list IN WWV_GLOBAL.VC_ARR2 DEFAULT C_EMPTY_DATA_TYPE_LIST, p_component_name IN VARCHAR2, p_search_type IN VARCHAR2 DEFAULT 2, p_search_column_no IN VARCHAR2 DEFAULT 2, p_search_string IN VARCHAR2 DEFAULT NULL, p_first_row IN NUMBER DEFAULT NULL, p_max_rows IN NUMBER DEFAULT NULL) RETURN t_column_value_list2;
パラメータ
表27-14 GET_DATA2のパラメータ
パラメータ | 説明 |
---|---|
|
参照に使用されるSQL文。 |
|
戻り列の最小数。 |
|
戻り列の最大数。 |
|
指定する場合は、各列のデータ型が配列内の指定されたデータ型と一致することを確認します。使用可能なデータ型の定数 |
|
エラーが戻される場合、エラー・メッセージが表示される際のページ・アイテムまたはレポート列の名前として、この値が使用されます。 |
|
c_search_*定数のいずれかである必要があります。c_search_*定数は、 |
|
SQL文を制限するために使用する列の数。 |
|
問合せを制限するために使用する値。 |
|
指定した行から問合せを開始します。指定した行より前の行はすべてスキップされます。 |
|
可能な戻り行の最大数。 |
戻り値
表27-15 GET_DATA2の戻り値
戻り値 | 説明 |
---|---|
|
列番号で索引付けされた |
例
次の例は、簡単なアイテム・タイプのプラグインのレンダリング・ファンクションを示します。このファンクションは、ページ・アイテムに定義されたLOVを実行し、ページ・アイテムの現在の値を使用して大/小文字が区別されるLIKEフィルタ処理を実行します。また、結果をHTMLリストとして生成します。ここでは、LOV SQL文の最初の列がVARCHAR2型であり、2つ目の列が数値型であることを確認します。
function render_list ( p_item in apex_plugin.t_page_item, p_value in varchar2, p_is_readonly in boolean, p_is_printer_friendly in boolean ) return apex_plugin.t_page_item_render_result is l_data_type_list apex_application_global.vc_arr2; l_column_value_list apex_plugin_util.t_column_value_list2; begin -- The first LOV column has to be a string and the second a number l_data_type_list(1) := apex_plugin_util.c_data_type_varchar2; l_data_type_list(2) := apex_plugin_util.c_data_type_number; -- l_column_value_list := apex_plugin_util.get_data2 ( p_sql_statement => p_item.lov_definition, p_min_columns => 2, p_max_columns => 2, p_data_type_list => l_data_type_list, p_component_name => p_item.name, p_search_type => apex_plugin_util.c_search_contains_case, p_search_column_no => 1, p_search_string => p_value ); -- sys.htp.p('<ul>'); for i in 1 .. l_column_value_list.count(1) loop sys.htp.p( '<li>'|| sys.htf.escape_sc(l_column_value_list(1).value_list(i).varchar2_value)|| -- display column '-'|| sys.htf.escape_sc(l_column_value_list(2).value_list(i).number_value)|| -- return column '</li>'); end loop; sys.htp.p('</ul>'); end render_list;
次の例は、単純なリージョン・タイプ・プラグインのレンダリング・ファンクションで、そのリージョンに定義されているSQL問合せを実行します。また、結果をHTMLリストとして生成します。この例では、SDO_GEOMETRY
などのオブジェクト・タイプ列の高度な処理を示します。
function render ( p_region in apex_plugin.t_region, p_plugin in apex_plugin.t_plugin, p_is_printer_friendly in boolean ) return apex_plugin.t_region_render_result is l_column_value_list apex_plugin_util.t_column_value_list2; l_geometry sdo_geometry; l_value varchar2(32767); l_dummy pls_integer; begin l_column_value_list := apex_plugin_util.get_data2 ( p_sql_statement => p_region.source, p_min_columns => 1, p_max_columns => null, p_component_name => p_region.name ); -- sys.htp.p('<ul>'); for row in 1 .. l_column_value_list(1).value_list.count loop sys.htp.p('<li>'); for col in 1 .. l_column_value_list.count loop if l_column_value_list(col).data_type = 'SDO_GEOMETRY' then -- Object Type columns are always returned using ANYDATA and we have to -- use GETOBJECT to transform them back into the original object type l_dummy := l_column_value_list(col).value_list(row).anydata_value.getobject( l_geometry ); l_value := '( type=' || l_geometry.sdo_gtype || ' srid=' || l_geometry.sdo_srid || case when l_geometry.sdo_point is not null then ',x=' || l_geometry.sdo_point.x || ',y=' || l_geometry.sdo_point.y || ',z=' || l_geometry.sdo_point.z end || ' )'; else l_value := apex_plugin_util.get_value_as_varchar2( p_data_type => l_column_value_list(col).data_type, p_value => l_column_value_list(col).value_list(row) ); end if; sys.htp.p( case when col > 1 then ' - ' end || l_value ); end loop; sys.htp.p('<li>'); end loop; sys.htp.p('<ul>'); return null; end;
親トピック: APEX_PLUGIN_UTIL