我在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';
怎么了?我在哪里弄错了?
答案 0 :(得分:0)
应该是
OPEN rc FOR
SELECT * FROM generals WHERE Key LIKE '%' || p_key || '%';
^^ ^^
concatenation