有一个职工表,包括职工的职工号,职称,工资,性别,年龄等根据输入的职工号number,如何用函数把这个职工的全部信息输出来呢?
是不是要对职称,工资,性别,年龄等分别声明一个变量,再用SELECT把结果放入声明的变量中,再输出?
这样的话岂不是要声明很多变量?或者有其他办法?小弟初学oracle,对这些不太懂,请指教~~

解决方案 »

  1.   

    仅供参考:
    CREATE OR REPLACE PROCEDURE sp_test (   
           p_outstr  OUT VARCHAR2   
          ,p_outint  OUT NUMBER   
          ,p_ref1    OUT SYS_REFCURSOR   
          ,p_ref2    OUT SYS_REFCURSOR   
          )   
    AS  
    BEGIN  
       p_outstr := 'abc';   
       p_outint := '56789';   
       OPEN p_ref1 FOR SELECT ROWNUM*2 AS RN FROM DUAL CONNECT BY ROWNUM<=10;   
       OPEN p_ref2 FOR SELECT ROWNUM*2+1 AS RN FROM DUAL CONNECT BY ROWNUM<=10;   
          
    END sp_test;   
    /   SET AUTOPRINT ON  
    VAR p_outstr VARCHAR2(10);   
    VAR p_outint NUMBER;   
    VAR p_ref1 REFCURSOR;   
    VAR p_ref2 REFCURSOR;
    EXEC sp_test(:p_outstr,:p_outint,:p_ref1,:p_ref2);   
      

  2.   

    可以使用记录类型。
    下面给你一个例子参考一下:
    CREATE OR REPLACE PROCEDURE MyTest IS
        -- 定义记录类型变量
        rec emp%ROWTYPE;
    BEGIN
        --可以直接将一条记录存储到记录类型中。
        SELECT * INTO rec FROM emp WHERE empno = '3456';
    END ;
      

  3.   

    那请问函数声明的括号里要写什么呢?
    MyTest(empno in int,out参数填什么啊)
    输出是这样输出吗?
    DBMS_OUTPUT.PUT_LINE(rec);好像还需要一个return参数呃,那写什么啊?
      

  4.   

    因为函数具有返回值,所以调用函数通常作为一个表达式的一部分。
    --比如这样一个例子
    --Func是一个函数,根据BOOK_ID,得到book_name
    DECLARE 
    res VARCHAR2(50);
    BEGIN
    res:=func(1); --res就直接接受函数的返回值了
    END;--out 参数的话可以定义一个类型匹配的变量