PL/SQL 中的变量;总是绑定变量?
Posted
技术标签:
【中文标题】PL/SQL 中的变量;总是绑定变量?【英文标题】:Variables in PL/SQL; always bind variables? 【发布时间】:2015-08-19 15:29:07 【问题描述】:我读到了这个问题:Are PL/SQL variables in cursors effectively the same as bind parameters?
给出的答案非常好。我不想使用该线程并要求澄清(如规则所述),而是希望在此处进行澄清。 我们应该(可以)假设 PL/SQL 语句中的每个变量都是绑定变量吗?
【问题讨论】:
【参考方案1】:是的,只要我们在嵌入式 SQL 中使用 PL/SQL 变量,它就是绑定变量。
如果我们不在SQL中使用它,那么它当然只是一个变量,因为绑定变量只是一个SQL的东西。一旦我们在 PL/SQL 包、函数或其他任何东西的 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 中使用,所以它从未被使用作为绑定变量。
【讨论】:
以上是关于PL/SQL 中的变量;总是绑定变量?的主要内容,如果未能解决你的问题,请参考以下文章
sqlplus pl/sql Date/Time 用户输入理解为绑定变量