和&有什么区别?和:在oracle的PL / SQL中?

时间:2012-04-16 10:38:05

标签: sql plsql sqldatatypes

我正在研究PL / SQL&我正在通过绑定变量。 我理解我们用来传递RUN-TIME值的绑定变量。

但是和&之间的区别是什么?和:PL / SQL中的(冒号)?两者是相同的还是两者之间有什么区别?我何时应该使用&并且:?

2 个答案:

答案 0 :(得分:6)

&仅在SQL*Plus中使用,除此之外没有任何意义。

SQL*Plus“解析”输入缓冲区时,它会将&variables替换为它们define d的内容。另请参阅this linkthis link技术术语替换变量

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

因此,简而言之,&variables被SQL * Plus取代,然后被传递给Oracle的SQL引擎,而:variables则不受SQL Plus和当它们出现时传递给Oracle的SQL引擎。在SQL Plus之外,&毫无意义。

答案 1 :(得分:2)

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

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

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

SQL Plus会提示用户输入name的值,并将其替换为运行之前的查询。因此,如果用户输入KING,则实际运行的SQL为:

select * from emp where ename = 'KING';