2

我正在研究 PL/SQL 并且正在查看绑定变量。我知道我们用来传递 RUN-TIME 值的绑定变量。

但是 PL/SQL 中的 & 和 :(colon) 有什么区别?两者都相同还是两者之间有什么区别?我什么时候应该使用 & 和 : ?

4

2 回答 2

8

&仅用于,在它SQL*Plus之外没有任何意义。

SQL*Plus“解析”输入缓冲区时,它会替换&variables为它们原来define的内容。另请参阅此链接此链接技术术语是替代变量

另一方面:variable真正的绑定变量。它们在 Oracle 的 SQL 引擎“解析”并执行 SQL 语句时使用。例如,请参阅此链接此链接

因此,简而言之,&variables被 SQL*Plus 替换,然后传递给 Oracle 的 SQL 引擎,而:variables被 SQL Plus 保持不变,并在它们出现时传递给 Oracle 的 SQL 引擎。在 SQL Plus 之外,&没有任何意义。

于 2012-04-16T10:49:29.350 回答
3

&在 PL/SQL 中没有任何意义,它实际上是一个 SQL Plus 功能(为了兼容性,已在 Toad、SQL Developer 等中复制)。在 SQL Plus 中,&用于定义一个替换变量,在将代码发送到服务器进行处理之前,由 SQL Plus 将其替换为指定的替换文本。

SQL Plus 替换变量的正确语法是以&name.a 开头并以 a&结尾.,但在大多数情况下.是可选的。因此,当您在 SQL Plus 中运行此代码时:

select * from emp where ename = '&name.';

SQL Plus 在运行前提示用户输入值name并将其代入查询中。因此,如果用户输入,那么实际运行的 SQL 是:KING

select * from emp where ename = 'KING';
于 2012-04-16T10:49:51.050 回答