我正在嘗試引用列名來命令在與Oracle數據庫進行通信的應用程序中進行查詢。我想使用一個綁定變量,這樣我就可以動態地改變什麼來排序查詢。是否可以通過Oracle中的綁定變量引用列名稱?
我遇到的問題是數據庫似乎忽略了列的順序。
有誰知道是否有一種特定的方式通過綁定變量引用數據庫列,或者甚至有可能嗎?
如我的查詢是
SELECT * FROM PERSON ORDER BY :1
(其中:1
將被綁定到PERSON.NAME
) 按字母順序查詢沒有返回結果,我擔心的是,數據庫爲解釋這一點: -
SELECT * FROM PERSON ORDER BY 'PERSON.NAME'
這顯然不起作用。
任何建議,非常感謝。
+1 btw我不知道Oracle是否屬於這種情況,但在其他數據庫(如DB2)中肯定存在不利因素 - 如果您修改查詢命令文本時,數據庫緩存查詢會更加困難時間(而不僅僅是參數的值) – 2009-03-04 10:54:18
這也發生在oracle中。但是你並不是一直在改變命令文本。列名只有幾個選項,所以只有五個緩存條目左右。 – Thilo 2009-03-04 10:55:38
非常感謝,這對我很有意義。我會盡量讓代碼明白它在查看order by子句的時候,如果它包含一個綁定變量,我會用它的值替換它。 – Scottm 2009-03-04 11:02:13