我读到了这个问题:Are PL/SQL variables in cursors effectively the same as bind parameters?
给出的答案非常好。我不想使用该线程并要求澄清(如规则所述),我想在此澄清一下。 我们应该(可以)假设PL / SQL语句中的每个变量都是绑定变量吗?
答案 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中使用,所以它永远不会被用作绑定变量。