2016-02-29 98 views
0

我使用功能PLSQL代码功能没有返回值

create or replace FUNCTION FSS_REF_GETREFIDBYCODEANDORDER (v_Code In CHAR, v_OrderBy In number) 
RETURN number IS v_RefID NUMBER(10); 

BEGIN 

SELECT REFID 
INTO v_RefID 
FROM REFERENCE 
WHERE Code like (v_Code || '%') 
AND 
ORDERBY = v_OrderBy 
and ROWNUM = 1; 

RETURN (v_RefID); 
END; 

应该返回一个值,因为如果我没有功能单独运行低于其给出的结果为1所需的值1

SELECT REFID 
-- INTO v_RefID 
FROM REFERENCE 
WHERE Code like ('001' || '%') 
AND 
ORDERBY = 4 
and ROWNUM = 1; 
给出

任何人都可以帮我解决任何功能错误。因为我是PL/SQL编程的新手。

+3

你是怎么调用这个函数的? –

+3

“它应该返回一个值”它代之以什么?你有错误信息吗? –

+2

我认为这个问题与你使用'char'数据类型而不是'varchar2'有关。然而,没有任何关于你如何调用函数的暗示,或者如果你得到错误信息,这是不可能告诉的。 –

回答

1

尝试将“v_Code中的CHAR”更改为“v_Code中的VARCHAR2”。 我也建议你添加NO_DATA_FOUND异常处理程序。例如。

CREATE OR REPLACE FUNCTION fss_ref_getrefidbycodeandorder(v_code IN VARCHAR2, v_orderby IN NUMBER) RETURN NUMBER IS 
    v_refid NUMBER(10); 

BEGIN 

    SELECT refid 
    INTO v_refid 
    FROM reference 
    WHERE code LIKE (v_code || '%') 
    AND orderby = v_orderby 
    AND rownum = 1; 

    RETURN(v_refid); 
EXCEPTION 
    WHEN no_data_found THEN 
    RETURN NULL; 
END;