Pobieranie danych z tabeli za pomocą PL / SQL

Oct 20 2020

Chcę pobrać wszystkie informacje o każdym dziale z tabeli DEPARTMENT i wyświetlić je na ekranie.

Column name      Data type     Constraints

DEPARTMENT_ID    NUMBER(5)     PK

DEPARTMENT_NAME  VARCHAR2(25)  NOT NULL

LOCATION_ID      VARCHAR2(15)

Sample Output:

Department Details are :
1000, ADMIN, HQ-101

1010, DEVELOPMENT, CBE-103

1020, TESTING, CHN-102

Mam kod, który wygląda następująco:

set serveroutput on;
declare
v_dno department.department_id%type;
v_dname department.department_name%type;
v_loc department.location_id%type;
begin
dbms_output.put_line('Department Details are :');
loop
dbms_output.put_line(v_dno || ', ' || v_dname || ', ' || v_loc);
end loop;
commit;
end;
/

Ale to nie daje żadnych wyników, proszę o pomoc. Z góry dziękuję!

Odpowiedzi

Littlefoot Oct 20 2020 at 19:04

Tak, prostym sposobem na to jest użycie pętli. Ale nic nie zapętlasz (nigdy nie pobieraj niczego do tych zmiennych) i nigdy nie wychodź z pętli. Poza tym, co dokładnie robisz?

Oto, jak mogłeś to zrobić (na podstawie DEPTtabeli Scotta, która jest podobna do twojej):

SQL> set serveroutput on
SQL> begin
  2    for cur_r in (select deptno, dname, loc from dept) loop
  3      dbms_output.put_line(cur_r.deptno ||' '|| cur_r.dname ||' '|| cur_r.loc);
  4    end loop;
  5  end;
  6  /
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

PL/SQL procedure successfully completed.

SQL>