2012-09-17 81 views
2

我有SQL函數,它不是我寫的。在WHERE子句中,「冒號」在SQL中意味着什麼?

我有很難理解,什麼是下面的條件是什麼意思?
具體:key||cLF||'

WHERE ' WHERE 1=1 ' 
     ||cLF||' AND f.key = :key ' 
     ||cLF||' AND i.flag = 0' 
     ||cLF||' AND r.flag = 0' 
+2

你的意思是「冒號」而不是分號? – jimp

+2

http://www.akadia.com/services/ora_bind_variables.html –

+0

@JoãoSilva感謝您的聯繫。和jimp修復謝謝,我儘量不要在提問時出現任何愚蠢的錯誤。的 – Mowgli

回答

3

首先,||運營商是一個string concatenation operator。所以看起來代碼使用cLF指定的條件構建WHERE子句。雖然我不完全確定他們爲什麼在cLF那裏三次加註。

:key語法是指在一個參數化查詢的參數。它的值將在您構建的SQL語句實際運行時傳入。

+0

'CLF'被設置爲恆'CONSTANT VARCHAR2(1):= CHR(10);' – Mowgli

+0

@Mogli - 啊,這是有道理然後! –

+0

邁克感謝您的解釋和有用的鏈接,所以在這個環節中,您能解釋一下「Mr」選擇什麼嗎? – Mowgli

1

您粘貼查詢是動態構造SQL語句的一部分。 此處的分號指向綁定庫所有者,這意味着「:key」的實際值將通過參數傳遞,而不是硬編碼。

上閱讀舉例執行立竿見影。