我正在研究 PL/SQL 并且正在查看绑定变量。我知道我们用来传递 RUN-TIME 值的绑定变量。
但是 PL/SQL 中的 & 和 :(colon) 有什么区别?两者都相同还是两者之间有什么区别?我什么时候应该使用 & 和 : ?
我正在研究 PL/SQL 并且正在查看绑定变量。我知道我们用来传递 RUN-TIME 值的绑定变量。
但是 PL/SQL 中的 & 和 :(colon) 有什么区别?两者都相同还是两者之间有什么区别?我什么时候应该使用 & 和 : ?
&
仅用于,在它SQL*Plus
之外没有任何意义。
在SQL*Plus
“解析”输入缓冲区时,它会替换&variables
为它们原来define
的内容。另请参阅此链接和此链接。技术术语是替代变量。
另一方面:variable
是真正的绑定变量。它们在 Oracle 的 SQL 引擎“解析”并执行 SQL 语句时使用。例如,请参阅此链接或此链接。
因此,简而言之,&variables
被 SQL*Plus 替换,然后传递给 Oracle 的 SQL 引擎,而:variables
被 SQL Plus 保持不变,并在它们出现时传递给 Oracle 的 SQL 引擎。在 SQL Plus 之外,&
没有任何意义。
&
在 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';