【问题标题】:Why does this query return no result为什么这个查询没有返回结果
【发布时间】:2020-08-20 14:38:10
【问题描述】:

我在 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';

怎么了?我哪里做错了?

【问题讨论】:

    标签: oracle plsql


    【解决方案1】:

    应该是

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 2020-09-24
      • 2019-12-11
      相关资源
      最近更新 更多