在oracle 存储过程里怎么实现select * from t ,就是像sql那样实现这样的查询

解决方案 »

  1.   

    如果返回的记录只有一条,可以
    select * into 一个记录类型的变量 from t;如果返回多的记录有多条,就要使用光标了CREATE OR REPLACE PROCEDURE ProcedureTest2 IS
        -- 定义光标
        CURSOR c1 IS SELECT * FROM t;
    BEGIN
        -- 光标FOR循环
        FOR r IN c1
        LOOP
            --对r,即每一条记录进行使用和处理。
        END LOOP;
    END ProcedureTest2;
      

  2.   

    我想在loop 里实现 select xuehao,xingming,chengji from t 该怎么写
      

  3.   

    游标里面是表的一条记录:
    select * into v_tmp from t;
    声明时定义v_tmp t%rowtype;
    loop时可以直接用:
    v_tmp.xuehao,v_tmp.xingming,v_tmp.chengji。。
      

  4.   

    可以这样
    [code]
    DECLARE
    v_xuehao t.xuehao%TYPE;
    v_xingming t.xingming%TYPE;
    v_xingming t.chengji%TYPE;
    CURSOR a IS select xuehao,xingming,chengji from t
    BEGIN
    OPEN a;
    LOOP
    FETCH a INTO v_xuehao,v_xingming,v_xingming;
    dbms_output.put(v_xuehao||v_xingming||v_xingming);
    EXIT WHEN a%NOTFOUND;
    END;
    [/code]
      

  5.   

    DECLARE
    v_xuehao t.xuehao%TYPE;
    v_xingming t.xingming%TYPE;
    v_xingming t.chengji%TYPE;
    CURSOR a IS select xuehao,xingming,chengji from t
    BEGIN
    OPEN a;
    LOOP
    FETCH a INTO v_xuehao,v_xingming,v_xingming;
    dbms_output.put(v_xuehao||v_xingming||v_xingming);
    EXIT WHEN a%NOTFOUND;
    END;