2016-04-20 10 views
0

私は関数を呼び出すプロシージャを持っています。この関数はテーブルを返し、プロシージャ内でテーブル全体を選択します。私はこのatmをやっていて、私は初期化されていないコレクションを取得します。プロシージャ内でOracleテーブルを返す方法

procedure check_all (
     p_period IN RPT_EXT.PERIOD%type default rptsum_time - 1/24/12, 
     p_days IN NUMBER default 1/24/12, 
     p_data_ext IN VARCHAR2 default DATA_EXT_DE2, 
     p_ext_no IN TWS_DIMENSION_DEFINES.EXT_NO%type default null, 
     p_record_id IN RPT_EXT.RECORD_ID%type default null 
) 
    as 
    sql_statement varchar2(200); 
    tab extraction_count_tab; 
    begin 
    tab := extraction_counts(p_period , p_days, p_data_ext, p_ext_no, p_record_id); 
    sql_statement := 'select* from tab'; 
    execute immediate sql_statement; -- need to chacnge this 
    dbms_output.put_line(chr(10)); 
    performance_check(p_period, p_days, p_data_ext); 
    end check_all; 
+0

、何を選択? – Thomas

+0

そのテーブルを繰り返し処理しますか? – Thomas

答えて

0

ないあなたが達成したいのかわから... あなたは彼らと手順performance_checkを呼び出すためにselect * from tabからすべてのレコードを使用したいですか?あなたが好きな

またはperformance_checkテーブルを返還しなければならないが、使用する:

次に、forループ、このような使用を検討してください? その場合は、プロシージャからテーブル関数(通常またはパイプライン)に切り替える必要があります。

ドキュメントまたはf.e. https://docs.oracle.com/cd/B28359_01/appdev.111/b28425/pipe_paral_tbl.htmを参照してください。一部のサンプルではhttps://oracle-base.com/articles/misc/pipelined-table-functionsです。

0

実際にやってみたいが、私はシナリオを複製しようとしたものを非常に不明確。それが役に立てば幸い。文法上の誤りがあれば私は私と一緒に仕事場を持っていません。

PROCEDURE check_all(
    p_period IN RPT_EXT.PERIOD%type DEFAULT rptsum_time - '1/24/12', 
    p_days  IN NUMBER DEFAULT '1/24/12', 
    p_data_ext IN VARCHAR2 DEFAULT DATA_EXT_DE2, 
    p_ext_no IN TWS_DIMENSION_DEFINES.EXT_NO%type DEFAULT NULL, 
    p_record_id IN RPT_EXT.RECORD_ID%type DEFAULT NULL) 
AS 
    sql_statement VARCHAR2(200); 
    tab extraction_count_tab; 
BEGIN 
    tab   := extraction_counts(p_period , p_days, p_data_ext, p_ext_no, p_record_id); 
    sql_statement := 'select * from TABLE(tab)'; 
    EXECUTE immediate sql_statement BULK COLLECT INTO tab; -- need to chacnge this 
    dbms_output.put_line(chr(10)); 
    performance_check(p_period, p_days, p_data_ext); 
END check_all; 
関連する問題