sql >> データベース >  >> RDS >> Oracle

ORA-01008:すべての変数がバインドされている場合、すべての変数がバインドされているわけではありません

    このエラーは、ODP.NETの場合によく発生します。問題は、クエリパラメータを提供されたパラメータに一致させる場合のOracleCommandのデフォルトの動作にあります。デフォルトでは、位置 nameの代わりにメソッドが使用されます 方法。実際には、コマンドに追加された各パラメーターは、名前に関係なくそのまま使用されます。クエリテキストでパラメーターを2回参照する場合は、その値を2回追加する必要があります。

    このデフォルトの動作は、BindByNameを設定することで上書きできます trueOracleCommadで ただし、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から派生した独自のプロバイダーを作成することを検討できます。 調整済み。




    1. MySQLでの文字列文字の並べ替え

    2. 2つの連続する行の日付の違い

    3. mysqlユーザー定義関数をデバッグする方法は?

    4. 文字を複数文字の文字列に置き換えます