Oracle - 在动态游标的 LIKE 子句中使用绑定变量

2023-11-22

我正在使用动态游标来获取数据。正在执行的查询类似于:

query := 'SELECT column1, column2 
          FROM my_table 
          WHERE column1 LIKE ''%:bv1%''';

游标本身是这样执行的:

OPEN my_cursor FOR query USING my_var1;

我还尝试检查查询并打印它:

... WHERE column1 LIKE '%:bv1%' ...

因此撇号被转义,但游标未获取任何数据。是否可以在 LIKE 子句中使用绑定变量,如果可以,我做错了什么?


这是一个微妙的问题。从静态语句开始,正确执行,然后将其转换为动态 SQL 通常很有用。

在非动态 SQL 中我们可能会这样做:

 SELECT column1, column2 
 FROM my_table 
 WHERE column1 LIKE '%' || local_var || '%'; 

动态等效为

query := 'SELECT column1, column2 
          FROM my_table 
          WHERE column1 LIKE ''%''||:bv1||''%'' ';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle - 在动态游标的 LIKE 子句中使用绑定变量 的相关文章

随机推荐