簡體   English   中英

oracle的PL / SQL中的&和:有什么區別?

[英]what is the difference between the & and : in PL/SQL in oracle?

我正在研究PL / SQL,正在通過bind變量。 我知道我們用來傳遞RUN-TIME值的綁定變量。

但是在PL / SQL中&和:(冒號)之間有什么區別? 兩者相同還是兩者之間有何不同? 我什么時候應該使用&和:?

&僅在SQL*Plus使用,它之外沒有任何意義。

SQL*Plus “解析”輸入緩沖區時,它將用define &variables替換&variables 另請參閱此鏈接此鏈接 技術術語替代變量

另一方面: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. 即以&開頭,以&結尾. ,但是在大多數情況下. 是可選的。 因此,當您在SQL Plus中運行此代碼時:

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

SQL Plus提示用戶輸入name值,並運行之前將其替換為查詢。 因此,如果用戶輸入KING則實際運行的SQL是:

select * from emp where ename = 'KING';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM