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 true
på OracleCommad
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.