【发布时间】:2012-05-07 10:16:15
【问题描述】:
我收到了一个包含绑定变量的查询,其中同一个绑定变量多次出现,例如:
select *
from some_table
where param1 = :parm1 and
applied_date = (select min(applied_date)
from some_table
where param1 = :parm1)
当我在 sqlplus 中运行此查询时,Oracle 似乎是按名称绑定的。 IE。识别出 parm1 的第一次和第二次出现是同一个参数,并且只提示我一次 parm1 的值。 但是,当我在我的 C++ 程序中将绑定变量描述到绑定描述符中时,它总是按位置绑定。
EXEC SQL DESCRIBE BIND VARIABLES FOR my_stmt INTO myBindDesc
myBindDesc->F 的值是 2 而不是 1,在我填充之前查询不会正确执行 他们两个,即使它的价值相同。 我的问题是:有没有办法在 PRO*C 中按名称绑定?
【问题讨论】:
-
嗯...看起来可能的解决方案可能是使用 dbms_sql.bind_variable()。可能比使用绑定描述符慢一点。
标签: c++ sql oracle select binding