返回表中所有列的Oracle函数

返回表中所有列的Oracle函数,oracle,plsql,Oracle,Plsql,我有这个功能: CREATE OR REPLACE FUNCTION checkLiveSoccerOdd (p_FIXID VARCHAR2, p_TYPE VARCHAR2, p_RES VARCHAR2) RETURN NUMBER IS odd NUMBER; B

我有这个功能:

CREATE OR REPLACE FUNCTION checkLiveSoccerOdd (p_FIXID    VARCHAR2,
                                               p_TYPE     VARCHAR2,
                                               p_RES      VARCHAR2)
   RETURN NUMBER
IS
   odd   NUMBER;
BEGIN
   SELECT O.Odd
     INTO odd
     FROM LIVE M, ODDS O
    WHERE     M.FIXID = O.FIXID(+)
          AND M.FIXID = p_FIXID
          AND O.TYPE = p_TYPE
          AND O.RES = p_RES;

   RETURN odd;
END;
现在我需要在查询中获取更多列,例如:

Select  M.*,  O.*
我尝试使用游标,但没有得到结果。 有人能帮我吗?

试试这个:

CREATE OR REPLACE FUNCTION checkLiveSoccerOdd (p_FIXID    VARCHAR2,
                                               p_TYPE     VARCHAR2,
                                               p_RES      VARCHAR2)
   RETURN SYS_REFCURSOR
IS
   COL   SYS_REFCURSOR;
BEGIN
OPEN COL FOR
   SELECT M.*,O.*    
     FROM LIVE M, ODDS O
    WHERE     M.FIXID = O.FIXID(+)
          AND M.FIXID = p_FIXID
          AND O.TYPE = p_TYPE
          AND O.RES = p_RES;

   RETURN COL;
END;

返回一个sys\u refcursor而不是仅仅返回一个数字。您说您希望查询中有更多的列-您的意思是确切的吗?您希望SQL语句返回更多的值,但仍然只需要返回一个值作为函数的结果?我希望返回这两个表中的所有列。@ChristianPalmer是的,我希望在传递这些参数时获得从表返回的所有值。。。。使用这个select,我只得到O.Odd.@KaushikNayak明智的单词,特别是因为和O.type=p_-type和O.res=p_-res谓词的存在使得它无论如何都是一个内部连接!对于OP:要使查询进行左外连接,您应该将+s添加到所有对赔率表的引用中,例如and o.type+=p_type和o.res+=p_rest。这有点帮助,但我可以将所有列都放在一列中,是否可以将所有列分开?如果在select语句中执行,则将其放在一列中,但如果在匿名块中执行,您可以单独显示它。