欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

oracle 绑定变量的用法

程序员文章站 2022-04-01 23:37:36
...
1.前言。
  oracle10g后,使用绑定变量更能提高效率。
以下转自http://www.educity.cn/develop/555687.html的文章。
让Oracle自己绑定变量

  set serverout on;

  set timing on;

  declare

  l_sql varchar();

  l_count number;

  l_param varchar();

  l_param varchar();

  begin

  l_param:=a;

  l_param:=b;

  select count(*) into l_count from table where col_=l_param and col_=l_param;

  dbms_outputput_line(l_count);

  end;

  /

  在上面的情况Oracle会自己绑定变量即如果参数保存在一个数组中select语句放在一个循环中

  select 语句只会编译一次

  像这样

  for i in 

  loop

  select count(*) into l_count from table where col_=l_param and col_=l_param and col_=i;

  dbms_outputput_line(l_count);

  end loop

  不绑定变量

  set serverout on;

  set timing on;

  declare

  l_sql varchar();

  l_count number;

  l_param varchar();

  l_param varchar();

  begin

  l_param:=a;

  l_param:=b;

  l_sql:=select count(*) into :x from table where col_=||l_param|| and col_=||l_param;

  Execute Immediate l_sql into l_count;

  dbms_outputput_line(l_count);

  end;

  /

  动态绑定变量

  set serverout on;

  set timing on;

  declare

  l_sql varchar();

  l_count number;

  l_param varchar();

  l_param varchar();

  begin

  l_param:=a;

  l_param:=b;

  l_sql:=select count(*) into :x from table where col_=:y and col_=:z ;

  Execute Immediate l_sql into l_count using l_paraml_param;

  dbms_outputput_line(l_count);

  end;

  /

  :x:y:z相当于占位符即

  用:p:p:p是一样的

  用:x:x:x也是一样的

  需要的绑定变量按顺序排在执行语句后面就可以了into的除外

  不过还是用pp好些至少可以看出绑定了多少个变量