0

私は以下のようなテーブル構造に取り組んでおり、前述のように出力を取得しようとしています。

ここに画像の説明を入力してください

これを実現するために、以下のPLSQLプロシージャを作成しました。

     CREATE OR replace PROCEDURE Sample_procedure
AS
  TYPE list_of_names_t
    IS TABLE OF emp.emp_index%TYPE;
  processedindexes LIST_OF_NAMES_T := List_of_names_t();
  flag             emp.emp_index%TYPE;
  CURSOR c1 IS
    SELECT *
    FROM   emp
    WHERE  Trim(emp_id) = 'AAAAA'
    ORDER  BY last_maint_ts ASC;
BEGIN
    dbms_output.Put('Entered the loop');

    FOR rec IN c1 LOOP
        SELECT emp_index
        INTO   flag
        FROM   emp
        WHERE  emp_id = rec.emp_id
               AND last_maint_ts > rec.last_maint_ts;

        IF flag IS NOT NULL THEN
          processedindexes.extend;

          Processedindexes(processedindexes.last) := flag;

          processedindexes.extend;

          Processedindexes(processedindexes.last) := rec.emp_index;

          dbms_output.Put('The indexes'
                          ||rec.emp_index
                          ||' & '
                          ||flag
                          ||'refer to same emp ID');

          exit;

          dbms_output.Put('received NULL');
        END IF;
    END LOOP;
END;  

1)毎回、これを実行すると、SQL Developerでプロセスが終了したときに出力が表示されます。これに関する提案はありますか?

注:私はPL SQLプログラミングに不慣れです。これを解決する私のアプローチが正しくない場合は、訂正してください。

4

1 に答える 1

1

sqlplus を開き、次を実行します。

set serveroutput on
exec Sample_procedure;

プロシージャが正常にコンパイルされていれば、dbms_output.put に出力が表示されます。

于 2013-01-08T17:20:31.430 に答える