同じバインド変数が複数回表示されるバインド変数を含むクエリを取得しました。次に例を示します。
select *
from some_table
where param1 = :parm1 and
applied_date = (select min(applied_date)
from some_table
where param1 = :parm1)
このクエリを sqlplus で実行すると、Oracle は名前でバインドされているように見えます。すなわち、parm1 の最初と 2 番目のオカレンスが同じパラメータであることを認識し、parm1 の値を求めるプロンプトを 1 回だけ表示します。しかし、C++ プログラムでバインド変数をバインド記述子に記述すると、常に位置によってバインドされます。
EXEC SQL DESCRIBE BIND VARIABLES FOR my_stmt INTO myBindDesc
myBindDesc->F の値は 1 ではなく 2 であり、同じ値であっても、両方に入力するまでクエリは正しく実行されません。私の質問は、PRO*C で名前でバインドする方法はありますか?