TYPE rec_data IS RECORD (                 ZENM_UPD_F TMM1011.ZENM_UPD_F%TYPE,        --全社マスタ更新フラグ                 HINCD   TMM1011.HINCD%TYPE,                --商品コード                 TEKIS_YMD TMM1011.TEKIS_YMD%TYPE,          --適用開始年月日                 TEKIE_YMD TMM1011.TEKIE_YMD%TYPE,          --適用終了年月日                 HBSTPSB TMM1011.HBSTPSB%TYPE,              --販売停止種別                 HINM_JIGCD TMM1011.HINM_JIGCD%TYPE,        --商品元事業コード                 HINBRCD TMM1011.HINBRCD%TYPE,              --商品分類コード                 HINSB TMM1011.HINSB%TYPE,                  --商品種別                 HINKG TMM1011.HINKG%TYPE,                  --商品記号                 HIN_NMJ TMM1011.HIN_NMJ%TYPE,              --漢字品名                 HIN_NM TMM1011.HIN_NM%TYPE,                --カナ品名                 RHIN_NMJ TMM1011.RHIN_NMJ%TYPE,            --漢字品名(略)                 SYS_KOSHIN_YMD TMM1011.SYS_KOSHIN_YMD%TYPE --システム更新年月日        );        myrec_data rec_data;取一个字段用 myrec_data.ZENM_UPD_F,我想取一整行数据,即取出所有字段,但不想一个一个取出来加在一块,
而是有什么方法能一次取一整条

解决方案 »

  1.   

    定义游标的时候,利用
    CURSOR CURSOR_NAME IS SELECT * FROM TAB_A; 
    B_V NUMBER;
    ..
    FOR CUR IN CURSOR_NAME LOOP
      --这样如果使用游标中的字段就随意使用了,不知道是不是你需要的意思!
      B_V:=CUR.COLUMN1;
     ....END LOOP;
      

  2.   

    B_V:=CUR.COLUMN1;这样还是取一个字段。我要取一整行字段。
    即:String = CRU.COLUMN1+CRU.COLUMN2……+COLUMNn(通俗写法)
    用这种加的方法可以实现但有什么方法不加就可以取出这一整行呢
      

  3.   

    写游标查询语句的时候直接拼接,可否?
    定义游标的时候,利用
    CURSOR CURSOR_NAME IS SELECT column1||column2||column3... as all_column FROM TAB_A; 
    B_V varchar2(200);
    ..
    FOR CUR IN CURSOR_NAME LOOP
      --这样如果使用游标中的字段就随意使用了,不知道是不是你需要的意思!
      B_V:=CUR.all_column;
     ....END LOOP;
      

  4.   

    不行,说'all_column' must be declared
      

  5.   

    09:58:13 SQL> create table taba (a varchar2(10),b varchar2(10),c varchar2(10));表已创建。09:58:56 SQL> declare 
    09:59:20   2  cursor cursor_name is select a||b||c as all_column from taba;
    09:59:53   3  v varchar2(50);
    10:00:06   4  begin
    10:00:09   5   for cur in cursor_name loop
    10:00:18   6   v:=cur.all_column;
    10:00:29   7   end loop;
    10:00:32   8  end;
    10:00:33   9  /PL/SQL 过程已成功完成。10:00:34 SQL>
      

  6.   

    CURSOR CURSOR_NAME IS SELECT (NVL(column1,'')||NVL(column2,'')||NVL(column3,'')... ) all_column FROM TAB_A;
    B_V varchar2(200);
    CUR CURSOR_NAME%ROWTYPE;
    ..
    FOR CUR IN CURSOR_NAME LOOP
    B_V:=CUR.all_column;
    ....END LOOP;
      

  7.   

    提示这个cur.all_column是char型的,而我所有字段是VARCHAR型的以提示超出范围,我怎么样指定我这个cur.all_column也变面VARCHAR
      

  8.   

    不会的,我上面做的试验你看到了,问题出在接受cur.all_column的变量是不是足够长。
      

  9.   

    我没有接受,只是作为一个字符串处理,比如输出,等我这里是作为一个MESSAGE的字符串传进去了。
      

  10.   

    不明白你的意思,也可使用SUBSTR()函数截取串长度以适应你char字段的设置。
      

  11.   

    select * from user_tab_columns where table_name = yourtablename