Oracle
 sql >> база данни >  >> RDS >> Oracle

ORA-01008:не всички променливи са обвързани, когато всички са обвързани

Тази грешка често се случва в случай на 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 коригирано.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Актуализиране на заявката if за Oracle

  2. Отпадане на свързани потребители в базата данни на Oracle

  3. Как да форматирате красиво отпечатването на SQL заявки в SQLAlchemy?

  4. Защо Oracle SQL мистериозно разрешава двусмислието в едно присъединяване и не го прави в други

  5. Как да видите типа на променлива в PL/SQL динамично?