我遇到了Oracle'绑定变量'和ActiveRecord的问题。 AR如何使用'绑定变量'?
我正在尝试使用oracle和oracle-enhanced适配器,将cursor_sharing指令设置为'force'或'similar',但结果SQL查询不包含bind vars,只包含普通字符串。 我正在使用AR 2.0.2和3.1+。
也许console verbose没有显示完整的SQL查询?
答案 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%'
您应该在输出中看到原始查询,但使用绑定变量代替您传入的值。