一句最简单的sql语句
select * from table;能显示得到一个表形式的数据。
PL/SQL能做到如是的输出吗?

解决方案 »

  1.   

    可以。
    但你必须要用游标或集合类型的oracle对象来存放你select出的结果。
    如:
    cursor my_cur is select * from table;
    --下面你就可以对my_cur游标遍历,对数据进行操作了。
      

  2.   

     就是说sql语句运行之后会以一张结构表来呈现结果,pl/sql能否做到这样?
      

  3.   

    不能。plsql 块中不能直接使用 select 语句,除非作为 select [bulk collect] into 语句或用于游标中。
      

  4.   


    --难道是这个意思?
    SQL> ed
    已写入 file afiedt.buf  1  create or replace procedure testPrl
      2  as
      3  cursor mycur is select * from emp;
      4  var_emp emp%rowtype;
      5  begin
      6  dbms_output.put_line('EMPNO     '||'  ENAME     '||'  SAL    ');
      7  dbms_output.put_line('----------'||'  ----------'||'  -------');
      8  open mycur;
      9  loop
     10  fetch mycur into var_emp;
     11  exit when mycur%notfound;
     12  dbms_output.put_line(rpad(var_emp.empno,12,' ')||
     13  rpad(var_emp.ename,12,' ')||rpad(var_emp.sal,7,' '));
     14  end loop;
     15  close mycur;
     16  exception
     17  when no_data_found then
     18  dbms_output.put_line('NO DATA');
     19  when others then
     20  dbms_output.put_line('EXCEPTION');
     21* end;
    SQL> /过程已创建。SQL> exec testPrl;
    EMPNO       ENAME       SAL
    ----------  ----------  -------
    7369        SMITH       800
    7499        ALLEN       1600
    7521        WARD        1250
    7566        JONES       2975
    7654        MARTIN      1250
    7698        BLAKE       2850
    7782        CLARK       2450
    7788        SCOTT       3000
    7839        KING        5000
    7844        TURNER      1500
    7876        ADAMS       1100
    7900        JAMES       950
    7902        FORD        3000
    7934        MILLER      1300PL/SQL 过程已成功完成。
      

  5.   

    是的,类似于这样,但是有没有办法不使用
     6  dbms_output.put_line('EMPNO     '||'  ENAME     '||'  SAL    ');
      7  dbms_output.put_line('----------'||'  ----------'||'  -------');
    来建立一个表结构,而直接在sql window输出呢?