-1

EMPLOYEES テーブルがあります。ループを作成する必要があります。ループのすべてのステップで、dbms_output.put_line(column_name) を使用します。

どうすればこれを作ることができますか?

4

3 に答える 3

3

ちょうどこの解決策を見つけました

begin
   for rec in (SELECT column_name 
               FROM all_tab_columns 
               WHERE owner = 'HR'
               AND table_name = 'EMPLOYEES')
   loop
       dbms_output.put_line(rec.column_name);
   end loop;
end;
于 2012-11-23T07:12:45.750 に答える
0

もちろん、このSELECTの例はtable_nameの後にWHEREを使用して書き直すことができます。私はこのコードをコンパイルしていませんが、大丈夫だと思います。アトリビュートのID_Employeeと名前を変更します

CREATE OR REPLACE PROCEDURE AAA_TEST
    IS
    BEGIN
      DECLARE 
            v_id NUMBER :=0;
            v_name VARCHAR2(25);

            CURSOR cursorMails IS
                 SELECT Id_Employee,Name FROM EMPLOYEES;  

            BEGIN
                           OPEN cursorMails;

                               LOOP

                                    FETCH cursorMails INTO v_id, v_name;
                                         DBMS_OUTPUT.PUT_LINE('Number of Employee: ' || v_id || ' Name Employee: ' || v_name);
                               EXIT WHEN cursorMails%NOTFOUND;
                               END LOOP;
                           CLOSE cursorMails;
            END;
    END;
    /
于 2012-11-23T12:09:12.760 に答える
0

以下のようにカーソルを使用してみてください。

set serveroutput on;
declare
 var_col1 varchar2(30) ;
 num_col2 number ;  

 CURSOR cur
 is       
  select var_col ,num_col
  from table
  where <conditions>;

begin
   open cur;
   fetch cur into var_col1,num_col2;

   LOOP
    fetch cur into var_col1,num_col2;
       EXIT WHEN cur%NOTFOUND;
       dbms_output.put_line( var_col1||'         '||num_col2);
   END LOOP;

   close cur;  
end;

ここに別の解決策があります:

set serveroutput on;
begin
  FOR  cur in ( select var_col ,num_col from table where <conditions>)
  LOOP
    dbms_output.put_line(cur.var_col||' = '||cur.num_col);
  END LOOP;
end;
于 2012-11-23T07:32:06.107 に答える