Oracle绑定变量不适用于ActiveRecord

时间:2011-11-29 06:07:38

标签: sql oracle activerecord

我遇到了Oracle'绑定变量'和ActiveRecord的问题。 AR如何使用'绑定变量'?

我正在尝试使用oracle和oracle-enhanced适配器,将cursor_sharing指令设置为'force'或'similar',但结果SQL查询不包含bind vars,只包含普通字符串。 我正在使用AR 2.0.2和3.1+。

也许console verbose没有显示完整的SQL查询?

1 个答案:

答案 0 :(得分:2)

使用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%'

您应该在输出中看到原始查询,但使用绑定变量代替您传入的值。