sql - Oracle - 函数内带有绑定变量的“错误绑定变量”
问题描述
为什么这段代码:
with
function qry(v in varchar2) return varchar2 is
begin
return owa_util.ite(v like ('%' || lower(:param) || '%'),'Y','N');
end;
select * from my_table where qry(my_col) = 'Y'
给我以下错误:
ORA-06553: PLS-49: bad bind variable 'PARAM'
06553. 00000 - "PLS-%s: %s"
*Cause:
*Action:
Error at Line: 6 Column: 46
解决方案
我假设您已经声明了param
绑定变量;如果你还没有,那么这是你的第一个问题。
您不需要函数:
select *
from my_table
where my_col LIKE '%' || LOWER( :param ) || '%'
如果你真的想要一个函数(不要因为它会阻止你在列上使用索引)然后将绑定值作为参数传递:
WITH FUNCTION qry(
value IN VARCHAR2,
filter IN VARCHAR2
) RETURN VARCHAR2
IS
BEGIN
RETURN CASE WHEN v LIKE '%' || lower(filter) || '%' THEN 'Y' ELSE 'N' END;
END;
SELECT *
FROM my_table
WHERE qry(my_col, :param) = 'Y'
推荐阅读
- awk - 比较两个文件中的行并仅打印匹配的列
- python - Tensorflow 2.3.0 CUDA Toolkit 10.1版不使用GPU
- python - 在 Python 中使用 if/else 语句返回 True 和 False 的更优雅的方法是什么?
- python-3.x - pytorch 中的简单初始块需要更长的时间在 GPU 上进行训练?
- c++ - 为什么在 C++ 中插入向量是有效的?
- javascript - 使用未知 JSON 节点解析数据
- sql - 如何在 SQL 中找到没有聚合函数的最小值?
- python - 调用定义函数:对已关闭文件的 I/O 操作
- spring-boot - Spring Gateway OAuth - 重定向的完整 URL
- javascript - 如何正确调用我的 Java Script 函数?