Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ORA-01008:nie wszystkie zmienne są powiązane, gdy wszystkie są powiązane

Ten błąd często występuje w przypadku ODP.NET. Problem polega na domyślnym zachowaniu OracleCommand, jeśli chodzi o dopasowanie parametrów zapytania do podanych parametrów. Domyślnie pozycja metoda jest używana zamiast name metoda. W praktyce każdy parametr dodany do polecenia będzie traktowany jako taki, niezależnie od nazwy, a jeśli odwołujesz się do parametru dwa razy w tekście zapytania, musisz dwukrotnie dodać jego wartość!

To domyślne zachowanie można zmienić, ustawiając BindByName na true na OracleCommad ale w przypadku SqlDataSource nie masz do niego dostępu i musisz podać wartości wielokrotnie w odpowiedniej kolejności:

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

(Mam nadzieję, że nie przegapiłem żadnego)

Jako alternatywę możesz rozważyć utworzenie własnego dostawcy wywodzącego się z ODP.NET wwith BindByName dostosowane.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ustaw Oracle NLS_LANGUAGE z java w aplikacji internetowej

  2. ORA-06553:PLS-801:błąd wewnętrzny [55018] podczas testowania funkcji zwracającej ROWTYPE

  3. SQL wielokrotne zapytanie SELECT z funkcją xmlagg - dane nie są pobierane w wymagany sposób

  4. PL/SQL używa VARRAY w KLAUZULI

  5. Tabele zewnętrzne Oracle