oracle - 为什么这个查询没有返回结果
问题描述
我在 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';
怎么了 ?我在哪里犯错了?
解决方案
应该
OPEN rc FOR
SELECT * FROM generals WHERE Key LIKE '%' || p_key || '%';
^^ ^^
concatenation
推荐阅读
- discord - TypeError:无法读取未定义的属性“fetchMembers”
- android - 使用 sslEngine 在 android 中获取 SSL 协议异常
- javascript - 通过从另一个文件发送刷新信号来重新渲染 FlatList?
- php - 我希望将文本类型存储在数据库中,而不是 id Ajax Laravel 7
- timestamp - 时刻js获取直到当前时间的日期
- hl7-fhir - 如何从规范生成原型文件(如 google-fhir 原型是从 FHIR 规范生成的)?
- text - 将多行文本转换为数组
- html - Bootstrap-4 justify-content-around 不适用于 flex-column
- qt - 如何在 QHBoxLayout 中对齐两个小部件,其中一个对齐最左侧,一个对齐最右侧?
- c# - EF FirstOrDefault 创建对变量的引用