Тази грешка често се случва в случай на ODP.NET. Проблемът се крие в поведението по подразбиране на OracleCommand, когато става въпрос за съпоставяне на параметрите на заявката с предоставените параметри. По подразбиране позицията методът се използва вместо име метод. На практика всеки параметър, добавен към командата, ще бъде приет такъв, какъвто е, независимо от името, и ако посочите параметър два пъти в текста на заявката, тогава трябва да добавите стойността за него два пъти!
Това поведение по подразбиране може да бъде заменено чрез настройка на 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>
(Надявам се, че не съм пропуснал нито един)
Като алтернатива можете да обмислите създаването на ваш собствен доставчик, извлечен от ODP.NET с BindByName
коригирано.