或许建立一个视图就能解决了create or replace view v_tt as
  select field1 , field2 ,field3, field4,field2-field1 v1,field4-field3 v2 
   from tt;tt_rec  tt%rowtype;
v1      number;
v2      number;cursor test_cur is select from tt where ..;
while test_cur%found loop
      fetch test_cur into tt_rec
        v1 := tt_rec.v1;
        v2 := tt_rec.v2;
      ....
end loop;

解决方案 »

  1.   

    create or replace procedure your_name(...)  as
    tt_rec  tt%rowtype;
    v1      number;
    v2      number;
    cursor test_cur is 
    select *,field2-field1,field4-field3 from tt where ..;
    begin
    open test_cur;
    fetch test_cur into tt_rec,v1,v2;
    while test_cur%found loop
          ... ...
          fetch test_cur into tt_rec,v1,v2;
    end loop;
    end;
    /参考一下。
      

  2.   

    To:百开心
    你定义的视图好象没用上啊。
    我的意识是想将tt表中每条记录的所有字段及其中的某几个字段相减赋给定义好的变量。
    在线!
      

  3.   

    呵呵,忘了另外一茬了tt_rec  v_tt%rowtype;
    v1      number;
    v2      number;cursor test_cur is select from v_tt where ..;
    while test_cur%found loop
          fetch test_cur into tt_rec
            v1 := tt_rec.v1;
            v2 := tt_rec.v2;
          ....
    end loop;这下就行了~
      

  4.   

    declare
    tt_rec  v_tt%rowtype;
    v1      number;
    v2      number;
    str varchar2(100);
    begin
    str:='CREATE GLOBAL TEMPORARY TABLE TABLENAME ON COMMIT PRESERVE ROWS AS select tt.*,field2-field1,field4-field3 from tt where ..';
    execute immediate str;
    insert into TABLENAME select tt.*,field2-field1,field4-field3 from tt where ..;
    select ... into tt_rec,v1,v2 from TABLENAME where....;
    dbms_output.put_line(tt_rec||' '||v1||' '||v2);
    end;
    /