监控数据库的 hard parse ,发现有不少sql语句,是由于后台的批价程序,启用的动态sql,但是是用字符串拼装的,没用变量绑定,造成了大量的sql的硬解析。
决定改成变量绑定的形式,但是发现一个比较棘手的问题,就是在查询条件中含有in,最后用Google大法,找到了解决方案。记录下来。
1.
create or replace type varchar2TableType as table of varchar2(2000);
2.
create or replace function f_str2List( p_string in varchar2 )
return varchar2TableType
is
v_str varchar2(32767) default p_string || ',';
v_n number;
v_data varchar2TableType := varchar2TableType();
begin
loop
v_n := to_number(instr( v_str, ',' ));
exit when (nvl(v_n,0) = 0);
v_data.extend;
v_data( v_data.count ) := ltrim(rtrim(substr(v_str,1,v_n-1)));
v_str := substr( v_str, v_n+1 );
end loop;
return(v_data);
end f_str2List;
3.
select *
from t_subscriberinfos a
where a.subscriberid in
(select * from the (select cast(f_str2List(:v_subs) as varchar2TableType) from dual))
把v_subs 用字符串替代一下 就可以了
分享到:
相关推荐
Oracle中的变量绑定是一种重要的数据库操作优化技术,尤其在处理大量重复SQL语句时,它可以显著提升系统的性能。本文将深入探讨变量绑定的概念、工作原理及其在Java编程中的应用。 首先,变量绑定指的是在SQL语句中...
在本文中,我们将详细地探讨绑定变量的目的、命名方法、使用限制条件和应用实例。 为什么使用绑定变量? 绑定变量是解决 Oracle 应用程序可伸缩性的一个关键环节。如果不使用绑定变量,每次查询都是一个新的查询,...
总结起来,在Java中实现Oracle变量绑定的关键在于使用PreparedStatement,并通过其提供的`setXXX()`方法设置参数。这样做不仅可以提升SQL执行效率,降低数据库负载,还能提高代码质量和安全性。因此,在开发过程中应...
这个项目使用Visual Studio 2019创建,展示了如何将静态变量绑定到TextBlock控件,当静态变量改变时,TextBlock的内容也会实时更新。通过查看和运行这个示例,你应该能更好地理解和应用这个技术。
1. **条件判断与SQL语句构造**:根据`in_by_priority`和`in_match_type`的值,动态决定SQL语句中的WHERE子句和ORDER BY子句。例如,如果`in_match_type`不为空,则在SQL语句中使用`:1`作为占位符,表示此处应插入`in...
上述代码中,首先声明了一个名为`i`的变量,并赋值为1,然后在查询语句中使用`id = :i`作为条件。 - **使用`print`命令查看绑定变量的值** 可以使用`print`命令查看绑定变量的当前值: ```sql SQL> print i; ...
然而,在实际应用中,由于查询条件经常变化,使得在SQL语句中拼接绑定变量变得非常复杂和繁琐。这种复杂性可能导致开发者倾向于采用简单但低效的做法,即将参数直接拼接到SQL语句中,而非使用绑定变量。这种方式虽然...
- **变量绑定**:在SQL语句中,用":"开头的变量表示绑定变量,如`:empno`。在执行时,这些变量会被实际的值替换,但查询的结构保持不变。 - **编译与重用**:Oracle首次执行包含绑定变量的查询时会进行编译,生成...
在上面的示例中,我们在PL/SQL过程中定义了一个绑定变量i,然后将其赋值为1,最后使用这个变量来查询表tt中的数据。 绑定变量的使用可以带来许多的好处,例如: * 提高数据库的性能:由于绑定变量可以使得每次提交...
### 绑定变量及其在性能优化中的应用 #### 一、什么是绑定变量? 绑定变量(Binding Variable)是在SQL语句中使用的一种特殊变量,它必须被替换为有效的值才能使SQL语句成功执行。例如,在以下SQL语句中,`:1`就是...
Oracle变量绑定是数据库优化的重要策略,尤其是在Java编程中与Oracle数据库交互时。它涉及到SQL语句的编写方式,以提高数据库性能,减少资源消耗。在Java中,如果SQL语句直接包含硬编码的常量,会导致一系列问题。 ...
本文将深入探讨绑定变量的原理、优势以及如何在实际应用中使用。 首先,为什么我们要使用绑定变量?这主要是为了提高应用程序的可伸缩性和性能。Oracle的共享池是一个内存结构,用于存储编译后的SQL语句和PL/SQL块...
在Oracle数据库的PL/SQL环境中,绑定变量是一种优化SQL语句执行效率的重要技术。它主要应用于动态SQL或者多次执行的SQL语句,以减少数据库的解析开销,提高系统性能。本文将详细讲解PLSQL中的绑定变量及其用法。 ...
本文将深入探讨绑定变量的原理、优势以及如何在实践中应用。 首先,为什么我们要使用绑定变量?在Oracle数据库中,每次执行带有硬编码值(如直接在SQL语句中指定的数值)的查询时,系统都需要进行解析、编译和优化...
【Oracle的绑定变量】在数据库管理系统中,尤其是Oracle OLTP(在线事务处理)系统中,绑定变量是一个关键的性能优化技术。它对于提高系统效率、减少资源消耗具有显著作用。绑定变量的基本思想是通过变量来替代SQL...
相反,使用绑定变量(如在`WHERE empno=:empno`中),变量的值在执行时传入,而非编译时确定。这样的查询语句只需解析一次,其执行计划被存储在共享池中,后续的同类型查询可以直接复用,避免了重复解析,提高了系统...
本文将围绕“Java代码绑定时间”这一主题,深度剖析在Java程序中使用Oracle绑定变量的必要性及其对数据库性能的影响。 #### 一、硬解析与软解析:数据库性能的双刃剑 在Oracle数据库中,SQL语句的执行通常涉及两个...
3. 除了简单的列绑定,还可以实现复杂的表达式绑定,比如计算列、条件格式化等。 **内绑定**: 1. 内绑定是指在一个数据集内部,将一个数据集的结果作为另一个数据集的输入。这种情况下,通常使用子数据集来实现。 ...