+ -
当前位置:首页 → 问答吧 → 请教,如何用函数根据输入的参数输出相关的记录

请教,如何用函数根据输入的参数输出相关的记录

时间:2011-12-12

来源:互联网

有一个职工表,包括职工的职工号,职称,工资,性别,年龄等

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

小弟初学oracle,对这些不太懂,请指教~~

作者: scutcs09   发布时间: 2011-12-12

仅供参考:
SQL code
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);   

作者: yixilan   发布时间: 2011-12-12

可以使用记录类型。
下面给你一个例子参考一下:

SQL code

CREATE OR REPLACE PROCEDURE MyTest IS
    -- 定义记录类型变量
    rec emp%ROWTYPE;
BEGIN
    --可以直接将一条记录存储到记录类型中。
    SELECT * INTO rec FROM emp WHERE empno = '3456';
END ;



作者: LuiseRADL   发布时间: 2011-12-12

引用 2 楼 luiseradl 的回复:
可以使用记录类型。
下面给你一个例子参考一下:


SQL code

CREATE OR REPLACE PROCEDURE MyTest IS
-- 定义记录类型变量
rec emp%ROWTYPE;
BEGIN
--可以直接将一条记录存储到记录类型中。
SELECT * INTO rec FROM emp WHERE empno = '3……

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

好像还需要一个return参数呃,那写什么啊?

作者: scutcs09   发布时间: 2011-12-12

引用 3 楼 scutcs09 的回复:

引用 2 楼 luiseradl 的回复:
可以使用记录类型。
下面给你一个例子参考一下:


SQL code

CREATE OR REPLACE PROCEDURE MyTest IS
-- 定义记录类型变量
rec emp%ROWTYPE;
BEGIN
--可以直接将一条记录存储到记录类型中。
SELECT * INTO rec FROM emp WHERE em……
因为函数具有返回值,所以调用函数通常作为一个表达式的一部分。SQL code

--比如这样一个例子
--Func是一个函数,根据BOOK_ID,得到book_name
DECLARE 
res VARCHAR2(50);
BEGIN
res:=func(1); --res就直接接受函数的返回值了
END;

--out 参数的话可以定义一个类型匹配的变量

作者: yinan9   发布时间: 2011-12-12

热门下载

更多