PL / SQL中的变量;总是绑定变量?

时间:2015-08-19 15:29:07

标签: variables plsql bind

我读到了这个问题:Are PL/SQL variables in cursors effectively the same as bind parameters?

给出的答案非常好。我不想使用该线程并要求澄清(如规则所述),我想在此澄清一下。 我们应该(可以)假设PL / SQL语句中的每个变量都是绑定变量吗?

1 个答案:

答案 0 :(得分:1)

是的,每当我们在嵌入式SQL中使用PL / SQL变量时,它就是一个绑定变量。

如果我们不在SQL中使用它,那么它当然只是一个变量,因为绑定变量只是一个SQL事物。只要我们在PL / SQL包,函数或其他任何东西中使用它,它就会成为SQL引擎的绑定变量。

declare
  v_one    varchar2(100);
  v_two    varchar2(100);
  v_three  varchar2(100);
begin
  v_one := 'one';
  v_two := 'two';

  select col_three into v_three from mytable where col_one = v_one;
end;

v_one,v_two和v_three都是PL / SQL变量。但是,我们的PL / SQL块中有SQL,我们在WHERE子句中使用v_one。所以v_one是该SQL语句中的绑定变量。 (v_three只是查询的返回值。into v_three不是SQL,而是PL / SQL,因为SQL不知道INTO关键字。)v_two甚至没有在任何SQL中使用,所以它永远不会被用作绑定变量。