2011-11-29 55 views
1

我遇到了Oracle綁定變量和ActiveRecord的問題。 AR如何使用'綁定變量'?Oracle綁定變量不適用於ActiveRecord

我想使用oracle和oracle增強的適配器,將cursor_sharing指令設置爲'force'或'similar',但結果SQL查詢不包含綁定變量,只包含純字符串。 我正在使用AR 2.0.2和3.1+。

也許控制檯詳細不顯示完整的SQL查詢?

回答

1

使用cursor_sharing = FORCE時,綁定變量不太可能被使用,但RoR不會知道任何關於它們的信息。 Active Record仍然會將查詢發送到數據庫而無需綁定,然後Oracle會強制綁定變量到所有文字的位置。因此,在Rails控制檯中,您只會看到沒有綁定的原始SQL。

要確認你的SQL語句使用的綁定,查詢V $ SQL的東西,如:

select sql_fulltext 
from v$sql 
where upper(sql_fulltext) like '%TABLE IN YOUR APP%' 

您應該看到在輸出原來的查詢,但使用綁定變量的地方,你已經通過了值英寸