以下のprocを作成して、1つのテーブルからすべてのデータを読み取り、それを.net形式のグリッドに読み込むようにしました。oracleバルクを収集してデータを読み取る
DECLARE
v_batchstatus XEVMPD_SUBMITTEDBATCH%ROWTYPE;
BEGIN
EVMPDADM.GETALLBATCHES_ARTICLE_57(v_batchstatus);
DBMS_OUTPUT.PUT_LINE(v_batchstatus.Batch_id || ' ' || v_batchstatus.BATCH_DESCRIPTION || ' ' || v_batchstatus.STATUS || ' ' ||v_batchstatus.RECORD_STATUS || ' ' ||v_batchstatus.NUMBER_OF_RECORDS);
END;
/
しかし、このプロセスから、私は最後の行のみを取得しています:procは罰金、私はPL-SQLブロックの下に使用してデータを印刷しようとした実行されているかどうかをテストするために
CREATE OR REPLACE PROCEDURE EVMPDADM.GETALLBATCHES_ARTICLE_57(p_batchstatus OUT XEVMPD_SUBMITTEDBATCH%ROWTYPE)
IS
TYPE batch_status IS TABLE OF XEVMPD_SUBMITTEDBATCH%ROWTYPE INDEX BY PLS_INTEGER;
l_batchstatus batch_status;
BEGIN
SELECT * BULK COLLECT INTO l_batchstatus FROM XEVMPD_SUBMITTEDBATCH ;
FOR i IN 1..l_batchstatus.count LOOP
p_batchstatus:= l_batchstatus(i);
END LOOP;
END GETALLBATCHES_ARTICLE_57;
。 テーブルにあるすべてのレコードを印刷したいとします。 上記のコードで何が間違っているか把握してください。
まず、プロシージャは取得した任意の最終行のデータのみを返します。結果セットを生成して1つの行以外のすべてを破棄し、どの行が保持されているかは気にしないようにデータをフェッチすることに苦労することはほとんどありません。第二に、 '%rowtype'変数を' dbms_output.put_line'に渡すことはできません。あなたは(v_batchstatus.col1 ||「」|| || v_batchstatus.col2 ...)特定のスカラ属性、すなわち 'DBMS_OUTPUT.PUT_LINEを渡すことができ;'しかし、あなたは、あなたが見たい属性を列挙する必要があると思います。 –