--查询一个字段时,我可以这样看结果
create or replace procedure AA_SXJTEST is 
  out_gg number(8); 
  cursor v_cur is select id from t_gzgl_zxjr_list;
begin 
  open v_cur;
  fetch v_cur into out_gg;
  while v_cur %found loop
    DBMS_OUTPUT.put_line('out_gg变量的值=:'||out_gg); 
    fetch v_cur into out_gg;
  end loop;
  close v_cur;
end AA_SXJTEST;--命令窗口去执行的,我可以看到结果,如下
SQL> exec AA_SXJTEST;
out_gg变量的值=:422
out_gg变量的值=:423
out_gg变量的值=:421--提问
如果查询语句是这样:select * from t_gzgl_zxjr_list;如何才能在命令窗口执行的时候看到结果。

解决方案 »

  1.   

    那就把一个个的列fetch到变量里去,然后put_line出来。
      

  2.   

    这个用函数就可以
    从oracle 9i 开始,提供了一个叫做“管道化表函数”的概念,来解决这个问题.这种类型的函数,必须返回一个集合类型,且标明 pipelined.这个函数不能返回具体变量,必须以一个空 return 返回.这个函数中,通过 pipe row () 语句来送出要返回的表中的每一行.调用这个函数的时候,通过 table() 关键字把管道流仿真为一个数据集以下是一个十分简单的实例:create table tb1(k number, v varchar2(10));insert into tb1(k, v) values(100,'aaa');
    insert into tb1(k, v) values(200,'bbb');
    insert into tb1(k, v) values(200,'ccc');select * from tb1;create type row_type1 as object(k number, v varchar2(10));create type table_type1 as table of row_type1;create or replace function fun1 return table_type1 pipelined as
    v row_type1;
    begin
         for myrow in (select k, v from tb1) loop
           v := row_type1(myrow.k, myrow.v);
           pipe row (v);
         end loop;
         return;
    end;select * from table(fun1);
      

  3.   


    create or replace procedure AA_SXJTEST is 
      out_gg number(8); 
      out_name varchar(50);
      cursor v_cur is select id, name from t_gzgl_zxjr_list; 
    begin 
    .......DBMS_OUTPUT.put_line('out_gg变量的值=:'||out_gg); 
        fetch v_cur into out_gg, out_name;   --- fetch到变量里,如果是*的话,注意对应上。 还有一种方式将一行数据取到记录变量中,需要使用%ROWTYPE事先定义记录变量,这样就不必分别定义和使用多个变量。 直接通过  定义的记录变量.columnname 就可以访问了。