sql >> Databasteknik >  >> RDS >> Oracle

ORA-01008:inte alla variabler bundna, när de alla är bundna

Detta fel inträffar ofta vid ODP.NET. Problemet ligger i OracleCommands standardbeteende när det gäller att matcha frågeparametrar med angivna parametrar. Som standard position metod används istället för namn metod. I praktiken kommer varje parameter som läggs till kommandot att tas som den är oavsett namnet, och om du refererar till en parameter två gånger i frågetexten måste du lägga till värdet för den två gånger!

Detta standardbeteende kan åsidosättas genom att ställa in BindByName till trueOracleCommad men i fallet med SqlDataSource du har inte tillgång till det och du måste ange värden flera gånger i rätt ordning:

<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>

(Jag hoppas att jag inte har missat någon)

Som ett alternativ kan du överväga att skapa din egen leverantör härledd från ODP.NET wwith BindByName justeras.




  1. MySQL CHAR()-funktion och UTF8-utgång?

  2. PHP-varning:mysql_query() förväntar sig att parameter 1 är sträng

  3. Kan ett C#-program läsa en textfil i minnet och sedan skicka det objektet till en metod som kräver ett filnamn?

  4. Min OOW15-resa är klar