このエラーは、ODP.NETの場合によく発生します。問題は、クエリパラメータを提供されたパラメータに一致させる場合のOracleCommandのデフォルトの動作にあります。デフォルトでは、位置 nameの代わりにメソッドが使用されます 方法。実際には、コマンドに追加された各パラメーターは、名前に関係なくそのまま使用されます。クエリテキストでパラメーターを2回参照する場合は、その値を2回追加する必要があります。
このデフォルトの動作は、BindByName
を設定することで上書きできます true
に OracleCommad
で ただし、SqlDataSource
の場合 アクセスできないため、値を複数回適切な順序で指定する必要があります:
<asp:SqlDataSource ID="EDTDS" runat="server" ConnectionString="<%$ ConnectionStrings:Camstar %>" ProviderName="<%$ ConnectionStrings:Camstar.ProviderName %>" SelectCommand="select ..."
<SelectParameters>
<asp:SessionParameter ConvertEmptyStringToNull="False" Name="startDate" SessionField="startDate" />
<asp:SessionParameter ConvertEmptyStringToNull="False" Name="startDate" SessionField="startDate" />
<asp:SessionParameter ConvertEmptyStringToNull="False" Name="endDate" SessionField="endDate" />
<asp:SessionParameter ConvertEmptyStringToNull="False" Name="equipID" SessionField="equipID" />
<asp:SessionParameter ConvertEmptyStringToNull="False" Name="startDate" SessionField="startDate" />
<asp:SessionParameter ConvertEmptyStringToNull="False" Name="endDate" SessionField="endDate" />
<asp:SessionParameter ConvertEmptyStringToNull="False" Name="equipID" SessionField="equipID" />
<asp:SessionParameter ConvertEmptyStringToNull="False" Name="venmod" SessionField="venmod" />
<asp:SessionParameter ConvertEmptyStringToNull="False" Name="handType" SessionField="handType" />
<asp:SessionParameter ConvertEmptyStringToNull="False" Name="handID" SessionField="handID" />
<asp:SessionParameter ConvertEmptyStringToNull="False" Name="operID" SessionField="operID" />
</SelectParameters>
</asp:SqlDataSource>
(見逃していないことを願っています)
別の方法として、BindByName
を使用してODP.NETから派生した独自のプロバイダーを作成することを検討できます。 調整済み。