返回记录类型

时间:2016-05-23 18:05:31

标签: function plsql

我需要声明记录类型,然后以某种方式返回它,以便能够从我的Java应用程序中读取该记录。

所以我想说我有桌子:

Player
------------
Player_id
First_Name
Second_Name
Team

然后我宣布记录类型:

DECLARE
   type Player_type is record
      (First_Name  varchar(25),
      Second_Name  varchar(25),
      Team varchar(25));
BEGIN
     SELECT First_Name, Second_Name , Team INTO Player_type FROM Player;
END;

所以这就是我能做的所有但我需要做一个将Player_id作为参数并返回记录类型的函数,然后我需要从Java应用程序中读取这个记录类型。但我真的不知道该怎么做......

1 个答案:

答案 0 :(得分:2)

这里的基本概念是你可以通过两种方式实现这一目标

1)通过使用复杂的对象类型 2)使用refcursor

第一个从JAVA部分处理起来有点复杂,代码如下所示。

--CREATE schema level OBJECT type and NESTED table type to RETURN it in FUNCTION

CREATE OR REPLACE TYPE player_type IS OBJECT
(First_Name  varchar(25),
      Second_Name  varchar(25),
      Team varchar(25)
)
/
CREATE OR REPLACE TYPE player_tab IS TABLE OF player_type
/

--FUNCTION Body

CREATE OR REPLACE FUNCTION player_attribute
(
p_player_id IN NUMBER
)
RETURN player_tab
AS
ply_tb player_tab;
BEGIN

    SELECT First_Name, 
    Second_Name , 
    Team 
    BULK COLLECT 
    INTO Ply_tb 
    FROM Player
RETURN ply_tb;

END;
/

第二种方法只是将整个输出作为refcursor传递,如下所示。

CREATE OR REPLACE FUNCTION player_attribute
(
p_player_id IN NUMBER
)
return sys_refcursor
AS
p_lst sys_refcursor;
BEGIN
Open p_lst FOR
    SELECT First_Name, 
    Second_Name , 
    Team 
    FROM Player
    WHERE player_id = p_player_id;

RETURN p_lst; 

END;
/