为什么此查询没有返回结果

时间:2020-08-20 06:34:37

标签: oracle plsql

我在MySQL中有简单的查询,例如

SELECT * FROM generals WHERE `Key` =  '{$key}'

我想使用PL / SQL在Oracle中创建函数,当我将其转换为PL/SQL时,看起来就像

FUNCTION GET_GENERALS_BY_KEY(p_key IN VARCHAR2)
    RETURN SYS_REFCURSOR IS 
    rc  SYS_REFCURSOR;
BEGIN
    OPEN rc FOR 
  SELECT * FROM generals WHERE Key LIKE '%p_key%';
RETURN rc;
END GET_GENERALS_BY_KEY;

测试时,我会像这样调用函数

SELECT GENERALS_PACKAGE.GET_GENERALS_BY_KEY('Company_Name') FROM DUAL;

但是不返回任何东西。 但是当我使用这样的查询时,它会返回结果。

SELECT * FROM generals WHERE Key = 'VAT';

怎么了?我在哪里弄错了?

1 个答案:

答案 0 :(得分:0)

应该是

OPEN rc FOR
SELECT * FROM generals WHERE Key LIKE '%' || p_key || '%';

                                          ^^       ^^
                                          concatenation