我需要声明记录类型,然后以某种方式返回它,以便能够从我的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应用程序中读取这个记录类型。但我真的不知道该怎么做......
答案 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;
/