可以。 但你必须要用游标或集合类型的oracle对象来存放你select出的结果。 如: cursor my_cur is select * from table; --下面你就可以对my_cur游标遍历,对数据进行操作了。
就是说sql语句运行之后会以一张结构表来呈现结果,pl/sql能否做到这样?
不能。plsql 块中不能直接使用 select 语句,除非作为 select [bulk collect] into 语句或用于游标中。
--难道是这个意思? 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 过程已成功完成。
但你必须要用游标或集合类型的oracle对象来存放你select出的结果。
如:
cursor my_cur is select * from table;
--下面你就可以对my_cur游标遍历,对数据进行操作了。
--难道是这个意思?
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 过程已成功完成。
6 dbms_output.put_line('EMPNO '||' ENAME '||' SAL ');
7 dbms_output.put_line('----------'||' ----------'||' -------');
来建立一个表结构,而直接在sql window输出呢?